Python循环中如何更新变量以避免每次打印相同的剩余字母数值
问题原因
你代码的核心问题是没有在每次输入新形容词后更新剩余字母的计数,所有计数逻辑只在第一次输入形容词时执行了一次,后续循环全程用的是固定值,所以输出永远不变。具体错误点如下:
- 循环内部打印时用的是固定的初始字母总数减第一个形容词的长度
letter - adjletter,这两个值全程没有修改,所以每次打印结果都完全一致 - 你定义的
letterleft变量只在进入while循环前计算了一次,后续输入新形容词后从来没有更新过它的值,循环的判断条件相当于永远用第一次的计算结果 - 循环里的break判断逻辑完全无效:你全程没有修改过初始的
letter变量的值,它永远是42,不可能小于0,就算剩余字母用完了也不会跳出循环
修正方案
你可以选择尽量保留原代码结构,仅修改错误逻辑,调整后代码如下:
letter = 42 if letter >= 42: print("You have", letter, "letters left") adj = input("Describe yourself with an adjective") adjletter = len(adj) letterleft = letter - adjletter # 打印第一次输入后的剩余字母数 print("You have", letterleft, "letters left") while letterleft > 0: adj2 = input("Describe yourself with an adjective") # 每次输入新形容词后更新剩余字母数 letterleft -= len(adj2) # 用更新后的数值打印,避免出现负数显示 print("You have", max(letterleft, 0), "letters left") print("Thanks for now!")
如果希望简化冗余逻辑,也可以写成更简洁的版本:
total_letters = 42 print(f"You have {total_letters} letters left") while total_letters > 0: adj = input("Describe yourself with an adjective: ") total_letters -= len(adj) print(f"You have {max(total_letters, 0)} letters left") print("Thanks for now!")
内容的提问来源于stack exchange,提问作者Sebastian
相关产品推荐
相关产品推荐

