Python基础教程(10)while\for循环语句

TangLu 未命名 2019-12-12 4040 0

一、Python while循环

while语句通过设置一个初始条件开始进行循环,每次循环都要判断循环条件的布尔值以决定循环是否继续,如果循环条件布尔值为False才会终止循环,所以在使用while循环的时候一定要设置好退出条件,比如满足xxx时就不再循环,否则就是无限循环。while语句适合循环次数未知的场景。

while [条件式]:
    [条件成立时执行的代码块]

#通过变量来作为判断条件
flag = True    
while flag:
    [代码]
    flag = False


Python while循环示例

#案例1,进行0到100数字累加
sum=0
num=1
while num <= 100:
    sum = sum + num
    num += 1
print (sum)

#案例2
input_number = int(input("请输入一个需要从1开始累加求和的数字:"))
#相加之前数字为0
sum = 0
#用于循环计数
count = 1
while count <= input_number:
    sum += count
    count += 1
print({sum})

#案例3
input_number = int(input("请输入一个数字,当该数字能被2整除或者包含2时就相加求和:"))
sum = 0
count = 1
while count <= input_number:
    if count %2 == 0:
         sum += count
    elif '2' in str(count):
         sum += count
    count += 1
print(sum)


Python还支持while...else...的语法,当while的条件不成立时会执行else后面的语句

age = 30
count = 0
while count < 5:  #如果要永远为真,可以写为while True:
  input_age=int(input("please guess my age:"))
  if input_age == age:
    print ("you are smart")
    break
  elif input_age > age:
    print ("think smaller")
  else:
    print ("think bigger")
  count +=1
else:
  print ("you have tried too many times")


二、for循环

for语句相比while循环来说,更适合去循环一些次数已知的场景,比如去遍历列表、集合或者字典中的每个元素(需要注意部分数据类型是无序的)。通常还可以配合range函数去循环指定次数

1、Python for循环语法格式

#语法格式
for [变量名] in [可遍历对象]:   #如果遍历对象是列表或字典等类型,变量名可以同时写多个来接收
  [循环体]
else:
  [当循环正常结束时执行部分]    #可以理解为循环结束后的收尾工作,非必须

#示例
fruit = ['apple','banana','orange']
for i in fruit:
    print (i)
    
for temp_element in range(1,10):
  print(temp_element)
  
#遍历字典的值
movie = {"name":"环太平洋","language":"En","Sessions":8}
for i in movie.values():
  print(i)
  
#获取字典中的key和value
movie = {"name":"环太平洋","language":"En","Sessions":8}
for x,y in movie.items():
  print(i)


2、Python for循环推导式

alist = []
for i in range(1,100):
    if ( i % 2 == 0 ):
        alist.append( i )
print (alist)

#下面代码和上面效果是一样的
blist = [i for i in range(1,100) if(i % 2) == 0]  #简单来说就是开头i的值从后面代码中取
print (blist)


3、Python for循环嵌套循环

#使用了isinstance函数来对数据类型进行判断,如果是list则遍历其中每个元素再进行打印
a=[1,2,3,[10,20,30],[50,60,70]]
for i in a:
  print(i)
  if isinstance(i,list)
    for x in i:
      print(x)


4、使用嵌套for循环实现冒泡算法

numbers = [1,3,5,6,2,3,1,5]

for i in range(0,len(numbers)-1):             #外层循环控制轮数,len-1的原因是因为len是从1开始算range是从0开始算,不减1的话range的下标就越界了
    for j in range(0,len(numbers) -1 -i):     #内层循环完成两两比较,每一轮比较完成后会取到一个最大的数字放在列表最后,并且该数字不再参与后面的比较了
        if numbers[j] > numbers[j+1]:         #第一次循环取出0和0+1进行比较,即1和3
            a = numbers[j]                    #下面三行用于交换两个数字的位置
            numbers[j] = numbers[j+1]         #下面三行用于交换两个数字的位置
            numbers[j+1] = a                  #下面三行用于交换两个数字的位置
print(numbers)



评论