Python 26 不固定次数循环
是否继续循环依赖条件
当条件一旦不满足,循环就终止
例
允许用户不断输入各种整数数据,直到用户输入0为止,并最终输出所有总数的和
观察已有代码
sum =0
for i in range(5):
sum = sum +int(input())
print(sum)
------------------------------------------------------------------------------------------------
sum = 0
while 输入的数不等于0:
sum = sum + int(input())
print(sum)
-----------------------------------------------------------------------------------------------
如何表达“输入的数不等于0”呢?
sum =0
sum =int(input())
while sum !=0:
sum = sum +int(input())
print(sum)
你会发现这个循环永远结束不了
为什么“死循环”,num始终都是第一次输入时的整数,当然条件真假判断永远不变,点击停止按钮强制结束程序运行
-------------------------------------------------------------------------------------------------------------
#解决方法之一
sum =0
num =int(input())
while num !=0:
sum = sum + num
num =int(input())
print(sum)
人工运行观察
输入1,保存到num,while条件为真,num为1不为0,进入循环,累加num到sum中,sum为1
输入2,进入下一轮循环判断条件,while条件为真,num为2不为0,进入循环,累加num到sum中,sum为3
输入3,进入下一轮循环判断条件,while条件为真,num为3不为0,进入循环,累加num到sum中,sum为6
输入4,进入下一轮循环判断条件,while条件为真,num为4不为0,进入循环,累加num到sum中,sum为10
输入0,进入下一轮循环判断条件,while条件为假,num为0,退出循环,输出为10
有点不好的地方,num=int(input())重复输入
先假设num 一个非0的数值,大家觉得有没有问题?num的第一个值1有没有被汇总
#先假设num一个非0的值
sum =0
num =1
while num !=0:
sum = sum + num
num =int(input())
print(sum)
---------------------------------------------------------------------------------------------------------------------
#调整语句的次序
sum =0
num =1
while num !=0:
num =int(input())
sum = sum + num
print(sum)
编程充满技巧,灵活的调整语句次序就是一种方法
---------------------------------------------------------------------------------------------------------------------
#解决方法之二
#当while 条件写成True,不做判断,在循环中决定何时结束循环
sum =0
while True:
num =int(input())
sum = sum + num
print(sum)
何时和如何结束循环?
#循环中也可以使用条件判断
sum =0
while True:
num =int(input())
if num ==0:#何时
break #如何
sum = sum + num
print(sum)
--------------------------------------------------------------------------------------------------
#例:增加输入负数不参与累加的要求
sum =0
while True:
num =int(input())
if num ==0:
break
if num >0:
sum = sum + num#增加条件判断
print(sum)
-----------------------------------------------------------------------
#使用continue
sum =0
while True:
num =int(input())
if num <0:
continue #不在执行当前循环后面的代码,而直接进入下一轮循环
if num ==0:
break
sum = sum + num
print(sum)
建议:break和continue其实都不是必须,大部分情况下都可以使用其他方法来取得同样的效果,除非这些运行指令能极大的提高编码效率
----------------------------------------------------------------------------------------------------------
#等价代码
#for循环写法
sum =0
#循环5次
for iin range(5):
#变量sum累加5次输入的数值
sum =sum +int(input())
print(sum)
#while 循环写法
sum =0
i =0
#循环5次
while i <5:
sum = sum +int(input())
#每次循环中变量i的值自己增加1
i +=1
print(sum)
--------------------------------------------------------------------
循环的else
循环收尾作用
会在循环正常结束(不是break)时被自动执行,巧妙的利用很有价值
sum =0
i =0
while i <5:
sum = sum +int(input())
i +=1
#while循环结束后一定执行else后面的语句
else:
print(sum)