HDP1008 发表于 2020-6-3 11:24:31

[课后作业] 第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:27:54

本帖最后由 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

HDP1008 发表于 2020-6-5 16:42:23

Twilight6 发表于 2020-6-3 11:27
[*]第一个代码:
因为你死循环了 永远不会执行到 print() 函数那,而且 break 是终止并退出循环,在prin ...

第一个问题我还是不能理解,第一个代码打印不出print(3),那第二个代码也break也退出循环啦

Twilight6 发表于 2020-6-5 16:43:22

HDP1008 发表于 2020-6-5 16:42
第一个问题我还是不能理解,第一个代码打印不出print(3),那第二个代码也break也退出循环啦

break 只退出一个循环 而不是全部循环退出

IAP_FYN 发表于 2020-6-5 16:57:30

第一个问题是这样的,你这代码里其实分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]
查看完整版本: [课后作业] 第009讲:了不起的分支和循环3