目标是创建一个简单的程序,生成一个介于1到100之间的数字,然后它将要求用户猜测这个数字,如果他们猜测超出数字范围,它将告诉他们再次猜测,如果不是,应该告诉他们他们的猜测是太高还是太低,促使他们再次猜测。一旦他们确实猜出正确的数字,它就会告诉他们他们已经赢了,并且告诉他们正确猜对的尝试次数。
这是我到目前为止所拥有的
import random
def play_game():
number = random.randint(1, 100)
print("Guess a number between 1 and 100 inclusive.")
count = 1
while True:
guess = int(input("Your guess: "))
if guess > 0 and guess <= 100:
#the age is valid
return play_game
else:
print("Invalid number.")
return play_game()
if guess < number:
print("Too low.")
elif guess > number:
print("Too high.")
elif guess == number:
print("You won! You guessed it in " + str(count) + " tries.\n")
return
count+=1
play_game()
我目前遇到的问题是,当检查他们的猜测是否在1-100之间时,而不是继续进行天气测试,或者他们的数字是否太低或太低,它会一直循环。
如果有人可以帮助我解决此问题并总体上检查代码,我将不胜感激。
答案 0 :(得分:0)
我认为问题在于流程中存在一些缩进和逻辑问题。 当您从游戏内部调用play_game()时,它将启动一个完全不同的游戏 具有不同的random_number。
满足您条件的良好代码可能如下所示
import random
def play_game():
number = random.randint(1, 100)
print("Guess a number between 1 and 100 inclusive.")
count = 1
while True:
guess = int(input("Your guess: "))
if guess > 0 and guess <= 100:
if guess < number:
print("Too low.")
elif guess > number:
print("Too high.")
elif guess == number:
print("You won! You guessed it in " + str(count) + " tries.\n")
return
count+=1
else:
print("Invalid number.")
play_game()
答案 1 :(得分:0)
您可以重新调整代码:
1.如果没有在范围内,进行高,低,匹配检查
2.如果猜测与否相符则中断
import random
def play_game():
number = random.randint(1, 100)
print("Guess a number between 1 and 100 inclusive.")
count = 0
while True:
count += 1
guess = int(input("Your guess: "))
if guess > 0 and guess <= 100:
#the age is valid
if guess < number:
print("Too low.")
elif guess > number:
print("Too high.")
elif guess == number:
print("You won! You guessed it in " + str(count) + " tries.\n")
break
else:
print("Invalid number, try again")
play_game()
答案 2 :(得分:0)
您遇到的问题是由于缩进不正确。检查数字是否在有效范围内的if-else语句与while循环处于相同的缩进级别,因此不在其中执行。只需缩进即可解决问题。 此外,您在不带括号的情况下调用了play_game,从而使函数调用的语法不正确。但是,与其检查数字是否大于0且小于100,不如检查数字是否小于0或大于100,这是最佳选择,如果是这种情况,请打印无效数字并调用play_game()。 看起来像这样:
while True:
if guess < 0 and guess > 100:
print ("Invalid number.")
return play_game()
其余的代码看起来不错。我还将链接附加在Python文档here.
的缩进部分中