如何验证用户输入是否为列表目标项?Python代码调试求助
解决Python猜城市游戏的逻辑问题
嘿,我来帮你搞定这个猜城市代码的问题!咱们先拆解下原代码里的几个关键bug,再给出修正方案:
原代码里的核心问题
- 变量名拼写混乱:你把
guessing写成了gussing,虽然Python允许这种写法,但很容易搞混,统一拼写能避免不必要的麻烦。 - 类型不匹配的条件判断:
gussing != guessing_list[1:5]是拿字符串和列表切片(一个列表对象)做比较,这俩永远不可能相等,导致循环会一直跑直到次数耗尽,根本触发不了成功分支。 - 细节拼写错误:比如
Peris应该是Paris,You're out or range!里的or是错别字,应该是of。
修正后的代码(匹配列表中任意城市即可成功)
如果你的需求是输入列表里的任意城市(包括你指定的"Brooklyn")都算成功,那用这个版本:
guessing_list = ["New York", "Mumbai", "Brooklyn", "Tokyo", "Paris"] guessing = "" guessing_counting = 0 guessing_limits = 4 guessing_range = False # 循环条件改为:输入不在目标列表中,且未超出次数限制 while guessing not in guessing_list and not guessing_range: if guessing_counting < guessing_limits: guessing = input("Enter Your dream city: ") # input本身返回字符串,无需str()转换 guessing_counting += 1 else: guessing_range = True if guessing_range: print("You're out of range!") else: print("You got your dream city!")
只匹配"Brooklyn"的版本
如果你的需求是只有输入"Brooklyn"才算成功,其他输入都算失败,那用这个简化版:
guessing = "" guessing_counting = 0 guessing_limits = 4 guessing_range = False while guessing != "Brooklyn" and not guessing_range: if guessing_counting < guessing_limits: guessing = input("Enter Your dream city: ") guessing_counting += 1 else: guessing_range = True if guessing_range: print("You're out of range!") else: print("You got your dream city!")
内容的提问来源于stack exchange,提问作者L N
相关产品推荐
相关产品推荐

