[课后作业] 第009讲:了不起的分支和循环3
9.5我下面的代码不应该打印出 3 么?结果却是没有
while True:
while True:
break
print(1)
print(3)
而答案的代码却能打印出2 和3
while True:
while True:
break
print(1)
print(2)
break
print(3
动动手0.
我以下代码有什么问题么?
count = 3
password = 666
while count:
passwd = input("请输入密码")
if passwd == password:
print("密码正确,进入程序......")
break
elif "*" in passwd:
print("密码中不能含有"*"号!" "您还有",count ,"次机会!",end=" ")
continue
else:
print("密码错误!您还有",count-1 "次机会!",end=" ")
count-1=1
本帖最后由 Twilight6 于 2020-6-3 11:41 编辑
[*]第一个代码:
因为你死循环了 永远不会执行到 print() 函数那,而且 break 是终止并退出循环,在print(1) 前面也导致了print(1) 永远不被执行
[*]第二个代码:
print(2) 下面有break 可以退出循环执行print(3) 所以都能打印
[*]动动手问题:
1 . 逗号好几个是中文逗号,要改成英文
2 . password 是整型 而 input 输出的是字符串 永远不可能相等 ,要在passwd 那转成整型 int 或者把 password 转为字符串 ,因为你要判断 * 号是否在你输入内,所以建议这里改成字符串
3 . "密码中不能含有"*"号!" "您还有",count ,"次机会!" 在字符串内引号如果重复使用要记得转义,除非是单双引号配合,因为Python 识别不出来你两个引号间到底是哪个引号的字符串
4 . 没有 count - 1 = 1 这种赋值方法 改成count -= 1 或者 count = count - 1
count = 3
password = '666'
while count:
passwd = input("请输入密码")
if passwd == password:
print("密码正确,进入程序......")
break
elif "*" in passwd:
print("密码中不能含有\\"*\\"号!" "您还有",count ,"次机会!",end=" ")
continue
else:
print("密码错误!您还有",count-1, "次机会!",end=" ")
count -= 1
Twilight6 发表于 2020-6-3 11:27
[*]第一个代码:
因为你死循环了 永远不会执行到 print() 函数那,而且 break 是终止并退出循环,在prin ...
第一个问题我还是不能理解,第一个代码打印不出print(3),那第二个代码也break也退出循环啦 HDP1008 发表于 2020-6-5 16:42
第一个问题我还是不能理解,第一个代码打印不出print(3),那第二个代码也break也退出循环啦
break 只退出一个循环 而不是全部循环退出 第一个问题是这样的,你这代码里其实分3个部分,一个外层循环,一个内层循环,还有一个独立于外层循环以外的print(3):代码在执行内层循环的时候,遇到break强制退出内层,因此print(1)不被执行,然后它其实一直在执行外层循环,但是外层循环的代码里是没有需要显示的内容的,所以它不显示内容,只是一直在不断执行这条语句而已。
假如你这么写:
while True:
while True:
break
print(1)
print(3)
那么它就会不断打印3
假如你这么写
while True:
while True:
break
print(1)
break
print(3)
那么它就会打印一个3
页:
[1]