生成1到9(包括1到9)之间的随机数。让用户猜测数字,然后告诉他们猜测的数字是否太低,太高或完全正确。 (_Hint:请记住在第一练习中使用用户输入的课程
其他:
让游戏继续进行,直到用户键入“退出” 跟踪用户进行了多少猜测,当游戏结束时,将其打印出来。
我实际上无法弄清楚为什么我的程序不打印if子句中的打印内容。我在while循环中的第一个功能是否打错了?
import random
def cpu_guess():
cpu_number=random.randint(1,9)
return cpu_number
print(cpu_guess())
def player_guess():
player_number=input('Digit a number between 1 and 9\n')
return player_number
def game():
r_guesses=0
w_guesses=0
while player_guess()!='exit':
if int(player_guess())>int(cpu_guess()):
print('Higher value than generated')
w_guesses+=1
elif int(player_guess())<int(cpu_guess()):
print('Lower value than generated')
else:
print('You have entered the right value')
r_guesses+=1
return r_guesses,w_guesses
print(game())
我不确定在player_guess()!='exit'时是否可以执行此操作:我需要创建一个这样的变量吗? guess = player_guess()并在猜测时编写!='退出'
答案 0 :(得分:2)
您要一遍又一遍地呼叫player_guess
,每次调用时,它将停止并等待输入。每个循环可能等待三次等待输入。调用一次函数并将结果保存在变量中:
def game():
r_guesses = 0
w_guesses = 0
guess = None # Save it here
while guess != 'exit':
guess = player_guess()
if guess > int(cpu_guess()):
print('Higher value than generated')
w_guesses+=1
elif guess < int(cpu_guess()):
print('Lower value than generated')
else:
print('You have entered the right value')
r_guesses += 1
return r_guesses, w_guesses
print(game())
然后,如注释中所述,对计算机进行类似的猜测。由于计算机的变化是不断变化的,因此您可能会经过所有检查并因此而得到意外的结果。考虑一下调用这些函数时会发生什么。
答案 1 :(得分:2)
您不断在循环的中间更改值;这是混乱的,不是逻辑游戏。
# Get a player guess and see whether it's "exit"
while player_guess()!='exit':
# Get a new guess; also make a new target number.
if int(player_guess())>int(cpu_guess()):
print('Higher value than generated')
w_guesses+=1
# Get a new guess; also make a new target number.
elif int(player_guess())<int(cpu_guess()):
print('Lower value than generated')
else:
print('You have entered the right value')
r_guesses+=1
相反,您需要使玩家尝试猜测的目标目标值为 。在游戏过程中不要更改它们。在循环中,让玩家猜一次 :在正确评估该猜测并做出响应之前,不要不要要求更多输入。
# Get a player guess and see whether it's "exit"
target = int(cpu_guess())
player_input = player_guess()
while player_input != 'exit':
guessed_num = int(player_input)
if guessed_num > target:
print('Higher value than generated')
w_guesses+=1
elif ...
看看效果如何?在完成当前猜测之前,不要返回您的输入例程。在玩家猜完之前的数字之前,不要返回目标生成例程。