我创建了一个随机选择一个数字的游戏,用户必须猜测这个数字。通常情况下,这很容易,但我需要使用函数来实现。
我在下面链接了我的代码。为了解释:
get_num()
函数给我们一个数字(应该是1到1000,但我有1到10用于故障排除)
询问用户()
是一种提示用户输入数字的输入。
猜一猜
用来确定你的数字是过高还是过低。
num_gues()
将跟踪用户猜测的次数。但它还没有完成,你可以暂时忽略这一点。
我在跑步
PyCharm社区版2021.3.2
,记录在案。
问题是:
该程序运行良好,只是无法判断数字是太大还是太小。当你一直猜同一个数字,比如说“2”,它会一直说这个数字太高太低。为什么?我有完美的If语句。如果你看截图,正确的数字是7,我有正确的If语句。然而,它仍然认为2比7高。为什么?
这里有一张图片作为证明:
以下是代码:
def main():
answer = get_num()
guess = ask_user()
num_guesses = 0
while guess != answer:
check = guess_check(guess)
if check == 2:
print(f"Check is {check}. Your guess of {guess} is too high. Pick something lower. You're now on Guess {num_guesses}!\n")
guess = ask_user()
elif check == 1:
print(f"Check is {check}. Your guess of {guess} is too low. Pick something higher. You're now on Guess {num_guesses}! The correct answer is {answer}\n")
guess = ask_user()
print(f"Check is {check}. Congratulations! Your guess of {guess} is correct! \n\nNumber of Guesses: {num_guesses}")
# This function actually gives us the number to guess
def get_num():
# Randomly determines a number between 0 and 1000
import random
answer = random.randrange(1, 10)
return answer
def ask_user():
answer = int(input("Pick a number: "))
return answer
def guess_check(guess):
answer = get_num()
if guess > answer:
# Guess is too high, therefore value for guess_check() is 2
check = 2
elif guess < answer:
# Guess is too low, therefore value for guess_check() is 1
check = 1
else:
# Guess is right on, therefore value for guess_check() is 0
check = 0
return check
def num_guesses():
number = 1
guess = guess_check()
#If Statement for whether guess is too high (2) or too low (1). If it's 0, then the number of guesses will not increase.'
if guess == 1 or guess == 2:
number += 1
return number
main()
我尝试了一些方法来解决这个问题:
-
我将ask_user()和guess_check()函数组合为一个函数。这没什么区别。
-
试图在不使用函数的情况下编写完全相同的程序。跑得很好。代码的猜测检查部分没有出现问题。所以这告诉我函数是这个问题发生的原因。
无论如何,非常感谢你的帮助。你都不知道我有多感激你。我绝望了。