【发布时间】:2016-11-28 10:21:47
【问题描述】:
我是 Python 新手(以及一般的编码),在阅读了大约一周的“像计算机科学家一样思考:用 Python 学习”之后,我决定尝试构建一个经典的“猜谜游戏”版本。我添加了一些额外的功能,例如计算用户猜测的次数,以及与模拟的“计算机”玩家对战以使程序更有趣。此外,计算机进行的猜测次数基于猜测给定范围内的数字所需的平均猜测次数(范围 n 的以 2 为底的对数),并根据标准偏差而变化。任何关于我的代码结构或我生成计算机猜测次数的方式的反馈都将不胜感激!!!
Anywayyysss....这是我的代码
import random
def get_number(level): #selects a random number in range depending on difficulty selected
if level == "e":
number = random.randint(1,20)
if level == "m":
number = random.randint(1,100)
if level == "h":
number = random.randint(1,1000)
elif level != "e" and level != "m" and level != "h":
print ("Invalid input!")
get_number()
return number
def select_level(): #prompts the user to select a difficulty to play on
level = str(input("Would you like to play on easy, medium, or hard? \n"
"Type 'e' for easy, 'm' for medium, or 'h' for hard!\n"))
return level
def guess_number(level): #function that prompts the user to guess within range depending on chosen difficulty
if level == "e":
guess = int(input("Guess a number between 1 and 20:\n"))
if level == "m":
guess = int(input("Guess a number between 1 and 100:\n"))
if level == "h":
guess = int(input("Guess a number between 1 and 1000:\n"))
return guess
def check_guess(guess,number): #processes the users guess and evaluates if it is too high, too low, or bang on
if guess > number:
print ("your guess is too high! Try again! \n")
if guess < number:
print ("your guess is too low! Try again! \n")
if guess == number:
print("\n{0} was the number!".format(number))
def com_num_guesses(level): #function to get the number of guesses taken by the computer
if level == "e":
com_guesses = round(random.normalvariate(3.7,1.1))
if level == "m":
com_guesses = round(random.normalvariate(5.8,1.319))
if level == "h":
com_guesses = round(random.normalvariate(8.99,1.37474))
print("The computer guessed the number in {0} guesses! Can you beat that?".format(com_guesses))
return com_guesses
def mainloop():
level = select_level()
number = get_number(level)
com_guesses = com_num_guesses(level)
guess = guess_number(level)
check_guess(guess,number)
num_guesses = 1
if guess == number: #tells program what to do if first guess is correct
print("You got it in {0} guesses.".format(num_guesses))
if num_guesses == com_guesses:
print("It took the computer {0} guesses too!\nIt's a tie!\n".format(com_guesses))
if num_guesses > com_guesses:
print("It took the computer {0} guesses.\nThe computer wins!\n".format((com_guesses)))
if num_guesses < com_guesses:
print("It took the computer {0} guesses.\nYou win!\n".format(com_guesses))
play_again = str(input("To play again type 'yes'. To exit type 'no'. \n"))
if play_again == "yes":
mainloop()
if play_again == "no":
raise SystemExit(0)
while True: #tells program how to handle guesses after the first guess
guess2 = guess_number(level)
check_guess(guess2,number)
num_guesses += 1
if guess2== number:
print( "You got it in {0} guesses.".format(num_guesses))
if num_guesses == com_guesses:
print("It took the computer {0} guesses too!\nIt's a tie!\n".format(com_guesses))
if num_guesses > com_guesses:
print("It took the computer {0} guesses.\nThe computer wins!\n".format((com_guesses)))
if num_guesses < com_guesses:
print("It took the computer {0} guesses.\nYou win!\n".format(com_guesses))
play_again = str(input("To play again type 'yes'. To exit type 'no'. \n"))
if play_again == "yes":
mainloop()
if play_again == "no":
raise SystemExit(0)
break
mainloop()
【问题讨论】:
-
更适合代码审查 - codereview.stackexchange.com
-
我投票结束这个问题,因为它属于Code Review
标签: python python-3.x random while-loop feedback