python - while循环最终没有中断
问题描述
我做了这个刽子手游戏:
wordsList = ["Lampe", "Pflanze", "Bauernhof", "Katze", "Monster",
"Weihnachtsmann", "Recycling", "Gymnastik", "Metapher", "Zyklop", "YouTube",
"Playstation", "Artikel 13", "Kokosnuss", "Variable", "Naruto", "Musik",
"Wandtattoo", "Taschenrechner", "Sonnenblume", "Bilderrahmen", "Videospiel"]
#wordslist
while True:
x = random.randint(0,21) #Random number for choosing a word
word = []
print("your word: ", end='') #show length of the word
for y in wordsList[x]:
if y == " ":
print(" ", end='')
word.append(" ")
else:
print("_ ", end='')
word.append(0)
print("")
fails=0 #number of fails
rdy=0 #rdy=1 if word is guessed
while fails<=8:
hit=0 #if hit=1 a letter was guessed, else fail++
cnt=0
inp = input("Input: ")
for y in wordsList[x]:
if (inp == y or inp.upper() == y) and word[cnt]==0:
word[cnt]=y
hit=1
cnt+=1
if hit==0:
fails+=1
drawHangman(fails) #draw hangman
rdy=drawWord(word) #show guessed letters
if rdy==1: #if rdy=1, finished
print("")
print("Well done!!!")
break
if rdy==0: #if rdy=0 and not in while-loop, lost
print("")
print("Game Over!!!")
print("The word was: " + wordsList[x])
print("Again?") #asked if wanna play again, 1=yes 0=no
print("1: Yes")
print("0: No")
inp=input("Input: ")
if inp==0:
break
现在我遇到的问题是,最后,当我问你是否想再玩一次并且你输入 0 表示否时,while 循环不会中断。有人看到问题了吗?我尝试使用变量作为 while-loop-condition 并将其设置为 False 如果你想结束但结果相同。也许缩进有问题?
解决方案
问题是输入不会将输入存储为整数。所以你最终会得到比较
if '0' == 0
您需要将 0 转换为字符串或将输入转换为整数
if int(inp)==0:
推荐阅读
- java - java.io.IOException:文件名、目录名或卷标语法不正确
- python - 使用 Python 发送电子邮件
- json - 在 GitHub 页面上正确的 JSON API 格式
- php - 提交后下拉值未插入数据库
- go - 如何声明一个在 golang 中接受任何类型值的 map 参数?
- python - 用于 GPU 任务的 Gunicorn Worker 类
- debugging - Flutter 的附加调试器输出到哪里?
- ios - Swift Firebase 在孩子中获取价值
- python - boto3 在将文件上传到 s3 存储桶时面临问题
- bash - 有没有办法从脚本中区分多个多行输出?