簡體   English   中英

如何使Python 3.4保持猜測的分數?

[英]How do I make Python 3.4 keep score of the amount of guesses made?

我正在用Python做一個Guess the Number游戲,我想讓Python記分您猜對數字之前花了多少次。 我將如何去做呢? 如果需要,我可以發布代碼進行查看。 謝謝。

import time
import os
from random import randrange, uniform

#Difficulty - Easy
def easy():
    print ("")
    print ("Difficulty: Easy")
    print ("")
    irand = randrange(1,10)
    with open("GTN.txt", "a") as text_file:
        text_file.write(str(irand) + " Easy" + "\n")
    while True:
        number = input("Pick a number 1 - 10: ")
        try:
            number = int(number)
        except ValueError:
            print("    ")
            print(number, 'is not a number, try again.')
            continue
        if number > irand:
            print("That's too high, try again.")
            print("    ")
            time.sleep(1)
        elif number < irand:
            print("That's too low, try again.")
            print("    ")
            time.sleep(1)
        elif number == irand:
            print("    ")
            print("You got it right! You won!")
            print("    ")
            time.sleep(2)
            main()
            break

#Difficulty - Medium       
def medium():
    print ("")
    print ("Difficulty: Medium")
    print ("")
    irand = randrange(1,100)
    with open("GTN.txt", "a") as text_file:
        text_file.write(str(irand) + " Medium" + "\n")
    while True:
        number = input("Pick a number 1 - 100: ")
        try:
            number = int(number)
        except ValueError:
            print("    ")
            print(number, 'is not a number, try again.')
            continue
        if number > irand:
            print("That's too high, try again.")
            print("    ")
            time.sleep(1)
        elif number < irand:
            print("That's too low, try again.")
            print("    ")
            time.sleep(1)
        elif number == irand:
            print("    ")
            print("You got it right! You won!")
            print("    ")
            time.sleep(2)
            main()
            break

#Difficulty - Hard
def hard():
    print ("")
    print ("Difficulty: Hard")
    print ("")
    irand = randrange(1,1000)
    with open("GTN.txt", "a") as text_file:
        text_file.write(str(irand) + " Hard" + "\n")
    while True:
        number = input("Pick a number 1 - 1,000: ")
        try:
            number = int(number)
        except ValueError:
            print("    ")
            print(number, 'is not a number, try again.')
            continue
        if number > irand:
            print("That's too high, try again.")
            print("    ")
            time.sleep(1)
        elif number < irand:
            print("That's too low, try again.")
            print("    ")
            time.sleep(1)
        elif number == irand:
            print("    ")
            print("You got it right! You won!")
            print("    ")
            time.sleep(2)
            main()
            break

#Difficulty - Ultra
def ultra():
    print ("")
    print ("Difficulty: Ultra")
    print ("")
    irand = randrange(1,100000)
    with open("GTN.txt", "a") as text_file:
        text_file.write(str(irand) + " Ultra" + "\n")
    while True:
        number = input("Pick a number 1 - 100,000: ")
        try:
            number = int(number)
        except ValueError:
            print("    ")
            print(number, 'is not a number, try again.')
            continue
        if number > irand:
            print("That's too high, try again.")
            print("    ")
            time.sleep(1)
        elif number < irand:
            print("That's too low, try again.")
            print("    ")
            time.sleep(1)
        elif number == irand:
            print("    ")
            print("You got it right! You won!")
            print("    ")
            time.sleep(2)
            main()
            break

#Difficulty - Master
def master():
    print ("")
    print ("Difficulty: Master")
    print ("")
    irand = randrange(1,1000000)
    with open("GTN.txt", "a") as text_file:
        text_file.write(str(irand) + " Master" + "\n")
    while True:
        number = input("Pick a number 1 - 1,000,000: ")
        try:
            number = int(number)
        except ValueError:
            print("    ")
            print(number, 'is not a number, try again.')
            continue
        if number > irand:
            print("That's too high, try again.")
            print("    ")
            time.sleep(1)
        elif number < irand:
            print("That's too low, try again.")
            print("    ")
            time.sleep(1)
        elif number == irand:
            print("    ")
            print("You got it right! You won!")
            print("    ")
            time.sleep(2)
            main()
            break

#This is the MainMenu  
def main():
    time.sleep(2)
    while True:
        print ("Please select a difficulty when prompted!")
        time.sleep(1)
        print ("[1] Easy")
        time.sleep(1)
        print ("[2] Medium")
        time.sleep(1)
        print ("[3] Hard")
        time.sleep(1)
        print ("[4] Ultra")
        time.sleep(1)
        print ("[5] Master")
        time.sleep(1)
        print ("[6] Exit")
        print ("")
        time.sleep(1)
        choice = input ("Please Choose: ")

        if choice == '1':
            time.sleep(2)
            print ("")
            print ("Loading game...")
            time.sleep(2)
            easy()

        elif choice == '2':
            time.sleep(2)
            print ("")
            print ("Loading game...")
            time.sleep(2)
            medium()

        elif choice == '3':
            time.sleep(2)
            print ("")
            print ("Loading game...")
            time.sleep(2)
            hard()

        elif choice == '4':
            time.sleep(2)
            print ("")
            print ("Loading game...")
            time.sleep(2)
            ultra()

        elif choice == '5':
            time.sleep(2)
            print ("")
            print ("Loading game...")
            time.sleep(2)
            master()

        elif choice == '6':
            time.sleep(2)
            print ("")
            print ("Exiting the game!")
            print ("")
            print ("3")
            time.sleep(0.5)
            print ("2")
            time.sleep(0.5)
            print ("1")
            time.sleep(2)
            SystemExit 

        else:
            print ("Invalid Option: Please select from those available.")
            print("")
            time.sleep(1)

print ("Welcome to GTN!")
time.sleep(2)
print ("Developed by: oysterDev")
time.sleep(2)
print ("Version 1.1.0")
print ("    ")        
main()

@Benjamin的答案會起作用。 但是要回答有關如何開始執行DRY的問題,您可以執行以下操作:

您的整個主要游戲代碼都可以進入此功能,並使用一些定義硬度的關鍵參數:

def the_game(difficulty_name, range_start, range_end):
    score = 0
    print ("")
    print ("Difficulty: %s" % difficulty_name)
    print ("")
    irand = randrange(range_start, range_end)
    with open("GTN.txt", "a") as text_file:
        text_file.write(str(irand) + " %s" % difficulty_name + "\n")
    while True:
        number = input("Pick a number 1 - 10: ")
        try:
            number = int(number)
        except ValueError:
            print("    ")
            print(number, 'is not a number, try again.')
            continue
        if number > irand:
            print("That's too high, try again.")
            print("    ")
            score += 1
            time.sleep(1)
        elif number < irand:
            print("That's too low, try again.")
            print("    ")
            score += 1
            time.sleep(1)
        elif number == irand:
            print("    ")
            print("You got it right! You won!")
            print("    ")
            print("You guessed wrong " + str(score) + " times")
            time.sleep(2)
            main()
            break

然后,您可以定義一些小功能,這些功能可以根據用戶選擇的硬度級別來調用游戲,如下所示:

#Difficulty - Easy
def easy():
    the_game("Easy", 1, 10)

#Difficulty - Medium       
def medium():
    the_game("Medium", 1, 100)

#Difficulty - Hard
def hard():
    the_game("Hard", 1, 1000)

#Difficulty - Ultra
def ultra():
    the_game("Ultra", 1, 100000)

#Difficulty - Master
def master():
    the_game("Master", 1, 1000000)

最后,您可以像這樣定義主要功能:

#This is the MainMenu  
def main():
    time.sleep(2)
    while True:
        print ("Please select a difficulty when prompted!")
        time.sleep(1)
        print ("[1] Easy")
        time.sleep(1)
        print ("[2] Medium")
        time.sleep(1)
        print ("[3] Hard")
        time.sleep(1)
        print ("[4] Ultra")
        time.sleep(1)
        print ("[5] Master")
        time.sleep(1)
        print ("[6] Exit")
        print ("")
        time.sleep(1)
        choice = input ("Please Choose: ")

        def show_loading_screen():
            time.sleep(2)
            print ("")
            print ("Loading game...")
            time.sleep(2)

        def show_exit_screen():
            time.sleep(2)
            print ("")
            print ("Exiting the game!")
            print ("")
            print ("3")
            time.sleep(0.5)
            print ("2")
            time.sleep(0.5)
            print ("1")
            time.sleep(2)

        if choice == '1':
            show_loading_screen()
            easy()

        elif choice == '2':
            show_loading_screen()
            medium()

        elif choice == '3':
            show_loading_screen()
            hard()

        elif choice == '4':
            show_loading_screen()
            ultra()

        elif choice == '5':
            show_loading_screen()
            master()

        elif choice == '6':
            show_exit_screen()
            SystemExit 

        else:
            print ("Invalid Option: Please select from those available.")
            print("")
            time.sleep(1)

您會發現我們已經將重復的屏幕加載代碼行提取到內聯函數中,可以重復使用。

最后,如果該Python文件作為腳本執行,則可以調用此主要函數。 這是一個好習慣。 您可以這樣做:

if __name__ == "__main__":
    print ("Welcome to GTN!")
    time.sleep(2)
    print ("Developed by: oysterDev")
    time.sleep(2)
    print ("Version 1.1.0")
    print ("    ")        
    main()

希望這對了解如何開始對DRY進行重構很有幫助。

嘗試制作一個名為ex的變量。 “得分”,每當他們猜錯的時候加1。

這應該工作。

def easy():
score = 0
print ("")
print ("Difficulty: Easy")
print ("")
irand = randrange(1,10)
with open("GTN.txt", "a") as text_file:
    text_file.write(str(irand) + " Easy" + "\n")
while True:
    number = input("Pick a number 1 - 10: ")
    try:
        number = int(number)
    except ValueError:
        print("    ")
        print(number, 'is not a number, try again.')
        continue
    if number > irand:
        print("That's too high, try again.")
        print("    ")
        score += 1
        time.sleep(1)
    elif number < irand:
        print("That's too low, try again.")
        print("    ")
        score += 1
        time.sleep(1)
    elif number == irand:
        print("    ")
        print("You got it right! You won!")
        print("    ")
        print("You guessed wrong " + str(score) + " times")
        time.sleep(2)
        main()
        break

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM