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

Python 当循环在第一个嵌套问题后中断时,python,while-loop,nested,Python,While Loop,Nested,我正在努力让我的程序运行起来。这是一个数字猜测游戏,用户输入他们的名字,然后程序生成一个数字1-100。从那里他们必须猜测数字,程序告诉他们数字是高还是低 如果用户成功猜出了数字,他们可以选择再次播放。我已经对它进行了编程,但在输入第一个数字后它就断了。知道我哪里出错了吗 import random #importing the randoms #getting the name from the user message=("What is your name?") nam

我正在努力让我的程序运行起来。这是一个数字猜测游戏,用户输入他们的名字,然后程序生成一个数字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 
随机导入
#导入随机数
#从用户处获取名称
message=(“你叫什么名字?”)
名称=输入(消息)
#来自用户的challange消息
打印(“你好!”,姓名,“我有一个从1到100的数字!你的工作就是试着猜它!”)
gamestat=False
当gamestat==False时:
#生成编号
number=random.randint(1101)
#开始比赛
guess=int(输入(“开始猜测:”)
#博弈逻辑
num_猜测=1
猜猜看!=编号:
如果猜测>数字:
打印(“下”)
guess=int(输入(“重试:”)
num_猜测+=1
如果猜测<数字:
打印(“更高”)
guess=int(输入(“开始猜测:”)
num_猜测+=1
打印(“恭喜你”,num_猜测,“尝试”)
message=(“您想再次播放吗?(是或否)”)
结果=输入(消息)
如果结果=“否”:
gamestat=True

正如前面提到的,这是一个缩进问题

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

程序缩进不正确。试用

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 
随机导入
#导入随机数
#从用户处获取名称
message=(“你叫什么名字?”)
名称=输入(消息)
#来自用户的challange消息
打印(“你好!”,姓名,“我有一个从1到100的数字!你的工作就是试着猜它!”)
gamestat=False
当gamestat==False时:
#生成编号
number=random.randint(1101)
#开始比赛
guess=int(输入(“开始猜测:”)
#博弈逻辑
num_猜测=1
猜猜看!=编号:
如果猜测>数字:
打印(“下”)
guess=int(输入(“重试:”)
num_猜测+=1
如果猜测<数字:
打印(“更高”)
guess=int(输入(“开始猜测:”)
num_猜测+=1
打印(“恭喜你”,num_猜测,“尝试”)
message=(“您想再次播放吗?(是或否)”)
结果=输入(消息)
如果结果=“否”:
gamestat=True

快乐编码

这是经过细微修改后的代码

一个是正确指出的缩进问题。除此之外,在guess<数字块中,消息开始猜测,这与上面的不一致,可能导致歧义。还可以删除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
随机导入
#导入随机数
#从用户处获取名称
message=(“你叫什么名字?”)
名称=输入(消息)
#来自用户的challange消息
打印(“你好!”,姓名,“我有一个从1到100的数字!你的工作就是试着猜它!”)
gamestat=False
虽然不是gamestat:
#生成编号
number=random.randint(1101)
#开始比赛
guess=int(输入(“开始猜测:”)
#博弈逻辑
num_猜测=1
猜猜看!=编号:
如果猜测>数字:
打印(“下”)
如果猜测<数字:
打印(“更高”)
guess=int(输入(“重试:”)
num_猜测+=1
如果数字==猜测:
打印(“恭喜你”,num_猜测,“尝试”)
message=(“您想再次播放吗?(是或否)”)
结果=输入(消息)
如果结果=“否”:
gamestat=True

我认为这可能是因为缩进问题。一旦我确保每个块上的压痕都是均匀的,它就对我起了作用。缩进在Python中非常重要。
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