Ich bin neu bei Python (und Codierung im Allgemeinen) und nach etwa einer Woche lesen "Denken wie ein Informatiker: Lernen mit Python" Ich beschloss, zu versuchen, eine Version der klassischen "Raten Spiel". Ich fügte einige zusätzliche Funktionen hinzu, wie das Zählen der Anzahl der Vermutungen, die der Benutzer macht, und das Spielen gegen einen simulierten "Computer" -Player, um das Programm etwas interessanter zu machen. Außerdem basiert die Anzahl der Annahmen, die der Computer annimmt, auf der mittleren Anzahl von Schätzungen, die benötigt werden, um eine Zahl in einem gegebenen Bereich (die logarithmisch von Basis 2 für den Bereich n ist) zu erraten und variiert entsprechend der Standardabweichung. Jede Rückmeldung über die Struktur meines Codes oder die Art und Weise, wie ich die Anzahl der Schätzungen, die der Computer annimmt, generiert, wäre sehr zu begrüßen !!!Code-Feedback für Python Ratespiel
Anywayyysss .... hier ist mein Code
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()
Besser geeignet für Code Review - http://codereview.stackexchange.com/ –
Ich stimme für das Schließen dieser Frage als Off-Topic ab, weil sie zu [codereview.se] gehört – Sayse