# 2018.05.12
# by pengxw
# Python3 循环语句
# 本章节将为大家介绍Python循环语句的使用。
# Python中的循环语句有 for 和 while。
# =============================================================================
# while 循环
# =============================================================================
# Python中while语句的一般形式:
# while 判断条件:
# 语句
# 同样需要注意冒号和缩进。另外,在Python中没有do..while循环。
# 以下实例使用了 while 来计算 1 到 输入正整数的总和:
n = int(input("请输入一个正整数:"))
sum = 0
counter = 1
while counter <= n:
sum = sum + counter
counter += 1
print("1 到 %d 之和为: %d" % (n,sum))
# 无限循环
# 我们可以通过设置条件表达式永远不为 false 来实现无限循环,实例如下:
var = 1
while var == 1 : # 表达式永远为 true
num = int(input("输入一个数字 :"))
print ("你输入的数字是: ", num)
print ("Good bye!")
# 你可以使用 CTRL+C 来退出当前的无限循环。
# 无限循环在服务器上客户端的实时请求非常有用。
# while 循环使用 else 语句
# 在 while … else 在条件语句为 false 时执行 else 的语句块:
count = 0
while count < 5:
print (count, " 小于 5")
count = count + 1
else:
print (count, " 大于或等于 5")
# =============================================================================
# for 循环
# =============================================================================
# Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
# for循环的一般格式如下:
# for <variable> in <sequence>:
# <statements>
# else:
# <statements>
# Python loop循环实例:
languages = ["C", "C++", "Perl", "Python"]
for x in languages:
print (x)
# C
# C++
# Perl
# Python
# range()函数
# 如果你需要遍历数字序列,可以使用内置range()函数。它会生成数列,类似R的seq
for i in range(-10, 10, 3) :
print(i)
# 0
# 3
# 6
# 9
# 以下 for 实例中使用了 break 语句,break 语句用于跳出当前循环体:
sites = ["Baidu", "Google","Runoob","Taobao"]
for site in sites:
if site == "Runoob":
print("菜鸟教程!")
break
print("循环数据 " + site)
else:
print("没有循环数据!")
print("完成循环!")
# break和continue语句及循环中的else子句
# break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。
# 实例1
for letter in 'shawn':
if letter == 'w':
break
print('当前字母:', letter)
print('Good bye!')
#实例2
num = 10
while num > 0 :
print('当前数字:', num)
num -= 1
if num <5 :
break
print('Good bye!')
# continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
num = 10
while num > 0 :
num -= 1
if num == 5 :
continue
print('当前数字:', num)
else:
print('Good bye!')
# 循环语句可以有 else 子句,它在穷尽列表(以for循环)或条件变为 false (以while循环)导致循环终止时被执行,但循环被break终止时不执行。
for n in range(2,20):
for x in range(2,n):
if n % x == 0:
print(n, '等于', x, '*', n//x)
break
else:
# 循环中没有找到元素
print(n, '是质数!')
# 使用内置 enumerate 函数对序列对象元素产生索引,可进行遍历:
# for index, item in enumerate(sequence):
# process(index, item)
for i, j in enumerate([32,35,31,36,39]):
print(i, j)
# 0 32
# 1 35
# 2 31
# 3 36
# 4 39
# 使用循环嵌套来实现99乘法法则
#外边一层循环控制行数
#i是行数
i=1
while i<=9:
#里面一层循环控制每一行中的列数
j=1
while j<=i:
mut =j*i
print("%d*%d=%d"%(j,i,mut), end=" ")
j+=1
print("") #换行作用
i+=1
# 1*1=1
# 1*2=2 2*2=4
# 1*3=3 2*3=6 3*3=9
# 1*4=4 2*4=8 3*4=12 4*4=16
# 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
# 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
# 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
# 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
# 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
# while 循环语句和 for 循环语句使用 else 的区别:
# 1、如果 else 语句和 while 循环语句一起使用,则当条件变为 False 时,则执行 else 语句。
# 2.如果 else 语句和 for 循环语句一起使用,else 语句块只在 for 循环正常终止时执行!
# 关于pass的作用:
# pass只是为了防止语法错误。
if a>1:
pass #如果没有内容,可以先写pass,但是如果不写pass,就会语法错误
# pass就是一条空语句。在代码段中或定义函数的时候,如果没有内容,或者先不做任何处理,直接跳过,就可以使用pass。
# 冒泡排序,python 版本
# 解析:很经典的排序方式,从数组中的第0个元素开始,与后面一个元素进行比较,如果前面的元素大于后面的元素,
# 就调换位置,循环到最后(即:a0与a1比较得到结果后,a1与a2比较...),最大的元素被换到数组最末尾,
# 剔除掉最后一个元素,在余下的数组元素中进行上述操作,到最后,整个数组呈现从小到大的排序
def rank(li) :
max = 0
for ad in range(len(li) - 1):
for x in range(len(li) - 1 - ad):
if li[x] > li[x + 1]:
max = li[x]
li[x] = li[x + 1]
li[x + 1] = max
else:
max = li[x + 1]
print(li)
rank([41,23344,9353,5554,44,7557,6434,500,2000])
# =============================================================================
# for/while ... else ... 及 break / continue 用法总结
# =============================================================================
# 1.break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。
# 2.continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后继续进行下一轮循环,对应的循环 else 块将执行。