猿问

Python 为什么我的代码会导致无限循环?

所以,我正在学习 Python 3。我尝试编写一个脚本,让你猜一个从 1 到 20 的数字。现在我知道这不是最好的方法,但是当我运行代码时,它会进入无限环形。是什么原因造成的?我做错了什么?我的问题的目的是了解我的错误以及导致错误的过程。感谢你们。


# Defining the function inside which the verification happens

def guesst(secretNumber, inputNumber):

    numberOfGuesses = 0

    if inputNumber >= 1 and inputNumber <= 20:

        while inputNumber:

            if inputNumber > secretNumber:

                numberOfGuesses += 1

                print('Your guess is too high.')

            elif inputNumber < secretNumber:

                numberOfGuesses += 1

                print('Your guess is too low.')

            elif inputNumber == secretNumber:

                print('Your guess is correct, congratulations! You\'ve my number in ', numberOfGuesses, 'guesses.')

                break

    else:

        print('Please enter a number between 1 and 20')


# Defining the variables used by the function

secretNumber = 11

inputNumber = int(input('I\'m thinking of a number between 1 and 20, try to guess which one: '))


# Calling in the function

guesst(secretNumber, inputNumber)


# -------------------------------------------------------

# I just changed my code to this and it worked, thank you!

# -------------------------------------------------------


def guesstt(secretNumber):

    numberOfGuesses = 0

    while secretNumber:

        inputNumber = int(input('I\'m thinking of a number between 1 and 20, try to guess which one: '))

        if inputNumber >= 1 and inputNumber <= 20:

            if inputNumber > secretNumber:

                numberOfGuesses += 1

                print('Your guess is too high.')

            elif inputNumber < secretNumber:

                numberOfGuesses += 1

                print('Your guess is too low.')

            elif inputNumber == secretNumber:

                print('Your guess is correct, congratulations! You\'ve my number in ', numberOfGuesses, 'guesses.')

                break

        else:

            print('Please enter a number between 1 and 20')


secretNumber = 11

guesstt(secretNumber)


阿晨1998
浏览 199回答 4
4回答

翻翻过去那场雪

阅读这两行:&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;inputNumber&nbsp;>=&nbsp;1&nbsp;and&nbsp;inputNumber&nbsp;<=&nbsp;20:&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;inputNumber:循环体while不会改变inputNumber。如果它在 1..10 或 12..20 范围内,则您的循环等于while True:并且它将永远运行。您可能希望在if循环内部进行测试,并且您肯定希望在您返回评估循环条件时更改值,例如通过input设置新值。

慕尼黑5688855

secretNumber 不变?if在and中使用 numberOfGuesseselif

牛魔王的故事

尝试这个def guesst(secretNumber):numberOfGuesses = 0while True:&nbsp; &nbsp; inputNumber = int(input('I\'m thinking of a number between 1 and 20, try to guess which one: '))&nbsp; &nbsp; if inputNumber > secretNumber:&nbsp; &nbsp; &nbsp; &nbsp; numberOfGuesses += 1&nbsp; &nbsp; &nbsp; &nbsp; print('Your guess is too high.')&nbsp; &nbsp; elif inputNumber < secretNumber:&nbsp; &nbsp; &nbsp; &nbsp; numberOfGuesses += 1&nbsp; &nbsp; &nbsp; &nbsp; print('Your guess is too low.')&nbsp; &nbsp; elif inputNumber == secretNumber:&nbsp; &nbsp; &nbsp; &nbsp; print('Your guess is correct, congratulations! You\'ve my number in ', numberOfGuesses, 'guesses.')&nbsp; &nbsp; &nbsp; &nbsp; breakelse:&nbsp; &nbsp; print('Please enter a number between 1 and 20')# Defining the variables used by the functionsnum = 11guesst(snum)当 while 循环重复时,您需要再次收集用户的输入,因此您的输入语句应该在 while 循环中,而不是在函数之外。您的 if 语句也应该在 while 循环内。

守候你守候我

变量 inputNumber 不会在 while 循环中更新。尝试添加:inputNumber&nbsp;=&nbsp;int(input("please&nbsp;try&nbsp;again"))或者大意是允许用户在下一次迭代之前更新他们的猜测。
随时随地看视频慕课网APP

相关分类

Python
我要回答