这是我第一个没有帮助的程序,所以我知道它可能不是最好的。
说明如下:
在名为 game.py 的文件中,实现一个程序:
提示用户输入级别, 。如果用户没有输入正整数,程序应该再次提示。 随机生成 1 到 1 之间的整数 ,包含在内,使用 random 模块。 提示用户猜测该整数。如果猜测值不是正整数,程序应再次提示用户。 如果猜测值小于该整数,则程序应输出 Toosmall!并再次提示用户。 如果猜测值大于该整数,程序应输出 Too large!并再次提示用户。 如果猜测与该整数相同,程序应该输出 Just right!然后退出。
现在,我的问题是,当用户猜测一个高于 int_rand 或低于 int_rand 的数字时,一切都会出错。程序开始输出“太小!”或“太大了!”无限地。我该怎么办?预先感谢。
import random
def main():
# Get positive integer from the user
number = positive_integer()
# Generate random int between 1 and number
int_rand = randomizer(number)
# Prompt the user to guess the integer
guess = guesser()
# Output
output(guess, int_rand)
def positive_integer():
while True:
try:
n = int(input("Level: "))
if n > 0:
return n
except ValueError:
pass
def randomizer(number):
rand_int = random.randint(1, number)
return rand_int
def guesser():
while True:
try:
x = int(input("Guess: "))
if x >= 1:
return x
except ValueError:
pass
def output(guess, int_rand):
while True:
try:
if guess < int_rand:
print("Too small!")
elif guess > int_rand:
print("Too large!")
elif guess == int_rand:
print("Just right!")
break
except ValueError:
pass
main()
循环应该在主函数中,以便用户在错误时输入新的猜测。我更改了输出函数,使其返回用户是否获胜的值,以便您知道何时结束循环。另外,没有必要排除输出中的值错误,因为您已经知道您正在获得一个 int。
def main():
number = positive_integer()
int_rand = randomizer(number)
while True:
guess = guesser()
has_won = output(guess, int_rand)
if has_won:
break
def output(guess, int_rand):
if guess < int_rand:
print("Too small!")
return False
elif guess > int_rand:
print("Too large!")
return False
elif guess == int_rand:
print("Just right!")
return True
如果猜测值小于该整数,则程序应输出 Toosmall!并再次提示用户。 如果猜测值大于该整数,程序应输出 Too large!并再次提示用户。 如果猜测与该整数相同,程序应该输出 Just right!然后退出。
输出示例1
等级:猫 1级 等级:10 猜测:5 太小! 猜测:8 太小! 猜测:9 正好! 示例输出 2
等级:1000 猜测:100 太小! 猜测:500 太大了! 猜测:300 太小! 猜测:400 太大了! 猜测:350 太大了! 猜测:320 太小! 猜测:330 太小! 猜测:335 太大了! 猜测:333 太大了! 猜测:332 太大了! 猜测:331 刚刚好