虽然循环没有打破到底

问题描述 投票:0回答:4

我制作了这个刽子手游戏:

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,如果你想结束但结果相同。也许缩进有问题?

python while-loop
4个回答
3
投票

问题是输入不会将输入存储为整数。所以你最终会得到比较

if '0' == 0

您需要将0转换为字符串或输入整数

if int(inp)==0:

0
投票

我会在第一时间包括条件:

inp = 0
while inp == 0:
   your_code()
   print("Again?") #asked if wanna play again, 1=yes 0=no
   print("1: Yes")
   print("0: No")
   inp=int(input("Input: "))

0
投票

正如其他人所说,input返回一个字符串。

将输入解析为整数

if int(inp) == 0:

或者你可以比较'0'

if inp == '0':

0
投票

你只需要改变if inp==0:if inp=="0":if inp=='0':。您需要与字符0进行比较,而不是值0。

© www.soinside.com 2019 - 2024. All rights reserved.