繁体   English   中英

在第一个嵌套问题后循环中断

[英]While loop breaking after first nested question

我正试图让我的程序正常工作。 这是一个数字猜谜游戏,用户输入他们的名字,然后程序会生成一个数字 1-100。 从那里他们必须猜测数字,程序会告诉他们他们的数字是更高还是更低。

如果用户成功猜出号码,他们可以选择再次玩。 我已经对此进行了编程,但在输入第一个数字后它会中断。 知道我哪里出错了吗?

import random
#importing the randoms
#getting the name from the user
message=("What is your name?")
name=input(message)
#challange message from user 
print("Hello! ", name,"I have a number from 1 to 100! It is your job to try and guess it!")
gamestat=False
while gamestat==False:

#generate number 
    number = random.randint(1,101)
#start the game 
    guess = int(input("start to guess: "))

#GAME LOGIC 
    num_guesses = 1

    while guess != number:       
           if guess > number:
         
                 print("lower")
                 guess = int(input("try again: "))
                 num_guesses +=1
    
       

                 if guess < number:

                       print ("higher")

                       guess = int(input("start to guess: "))

                       num_guesses +=1
           

print("congrats it took you", num_guesses, "tries")

message=("Would you like to play again? (yes or no)")
result=input(message)
if result == "no":
    gamestat= True 

程序缩进不正确。 尝试使用

import random
#importing the randoms
#getting the name from the user
message=("What is your name?")
name=input(message)
#challange message from user 
print("Hello! ", name,"I have a number from 1 to 100! It is your job to try and guess it!")
gamestat=False
while gamestat==False:

#generate number 
    number = random.randint(1,101)
#start the game 
    guess = int(input("start to guess: "))

#GAME LOGIC 
    num_guesses = 1

    while guess != number:       
        if guess > number:
            print("lower")
            guess = int(input("try again: "))
            num_guesses +=1
    
       

        if guess < number:
            print ("higher")
            guess = int(input("start to guess: "))
            num_guesses +=1
           

    print("congrats it took you", num_guesses, "tries")

    message=("Would you like to play again? (yes or no)")
    result=input(message)
    if result == "no":
        gamestat= True 

快乐编码!

正如已经提到的评论,这是一个缩进问题。

if guess < number:
    print ("higher")
    guess = int(input("start to guess: "))
    num_guesses +=1

这个块是一个选项卡,它位于if guess > number下,因此永远无法到达。 将您的while loop更改为

while not gamestat:
    # you can just invert it, same result as comparing to False
    number = random.randint(1, 101)
    # add some try except logic here and in the other inputs if the user doesn't input an int
    guess = int(input("start to guess: "))
    num_guesses = 1
    while guess != number:
        if guess > number:
            print("lower")
            guess = int(input("try again: "))
            num_guesses += 1
        if guess < number:
            print("higher")
            guess = int(input("start to guess: "))
            num_guesses += 1

这是经过轻微修改后的代码。

一个是缩进问题,指出正确。 除此之外,在guess< number 块中,消息开始猜测,这与上面的不一致可能会导致歧义。 您也可以删除 if 块之外的公共部分。

import random

# importing the randoms
# getting the name from the user
message = ("What is your name?")
name = input(message)
# challange message from user
print("Hello! ", name, "I have a number from 1 to 100! It is your job to try and guess it!")
gamestat = False
while not gamestat:
    # generate number
    number = random.randint(1, 101)
    # start the game
    guess = int(input("start to guess: "))

    # GAME LOGIC
    num_guesses = 1

    while guess != number:
        if guess > number:
            print("lower")

        if guess < number:
            print("higher")
        guess = int(input("try again: "))
        num_guesses += 1
    if number == guess:
        print("congrats it took you", num_guesses, "tries")
        message = ("Would you like to play again? (yes or no)")
        result = input(message)
        if result == "no":
            gamestat = True

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM