while True:
s = input("请输入一个名字(按Q退出):")
if s == "Q": #if条件语句来判断是否进行break语句
break #条件成立,在此循环中break下面的代代码不执行
for c in s:
if c =="E":
break
print(c,end="") #在break语句后面换行缩进代码不会执行
print("程序退出")
请输入一个名字(按Q退出):DE
D请输入一个名字(按Q退出):DQ
DQ请输入一个名字(按Q退出):
为什么输出会是这样子
DE中包含E,break语句执行,DQ中包含Q,break语句却不执行?
该回答引用GPTᴼᴾᴱᴺᴬᴵ
因为在这个程序中,有两个不同的循环结构。第一个是while循环,第二个是for循环。
·
当输入为DE时,for循环会遍历字符串,发现包含E时执行break语句跳出for循环,但是while循环还在继续,等待下一次输入。
·
当输入为DQ时,for循环依然会遍历字符串,但是没有发现包含E的字符,for循环执行完毕后,程序执行到while循环的末尾,执行print("程序退出")语句,程序终止。
·
因此,break语句只会跳出当前所在的循环结构。在这个程序中,break语句只能跳出for循环,而不能跳出while循环。如果想要退出整个程序,可以将while循环放在一个函数中,使用return语句代替break语句来退出。
DE的推出是在for循环里,依次取'D'和'E',取到'E'的时候第二个break执行
DQ 不等于 Q 所以第一个Q不执行;在for循环里也没有E,所以第二个break也不执行
break跳出的是for循环
改为
if 'E' in s:
break
s是整个字符串啊,你输入Q才break啊
另外你有两个break,你说不执行是哪个呢?