簡體   English   中英

python骰子預測游戲

[英]Dice prediction game for python

我正在編寫一個python程序,要求您預測死亡。 您以5歐元開始,如果獲勝,您將獲得5歐元;如果是1歐元,則損失1歐元;如果超過1歐元,則損失3歐元。

def main():

    while True:
        saldo = 5
        y = input("[R]oll or [S]top")
        if y == "r" :
            p = input("What is your prediction?")
            from random import randint
            x = randint(1, 6)
            print(x)
            if p == x:
                saldo = saldo +5  
            elif p == int(x-1) or p == int(x+1):
                saldo = saldo -1
            else:
                saldo = saldo -3
            print ("saldo is " , saldo)
        elif y == "s" :
            saldo = saldo
            print ("eindsaldo is " , saldo)
            return
        else:
            print ("Enter r or s")

main()

隨機部分正在工作,但薩爾多部分沒有工作,我無法弄清楚出了什么問題。 我是Python的新手,但在Javascript和其他基本編程語言方面有一些經驗。 看起來應該可以。

您的saldo在while循環內初始化。

這意味着每次您從循環的開頭開始,saldos設置為5。

def main()
    saldo = 5
    while True:
        y = input("[R]oll or [S]top")
        ...

saldo = 5 while循環之外。

看下面的代碼。 我自由地進行了其他更改,以使整個過程變得更加Python化和高效。

Update2:我可以自由地進行一些小的調整(Antonvbr)

from random import randint  # 1

def main(saldo):            

    while True:
        y = input("[R]oll or [S]top").lower()  # 3

        if y == "r" :
            p = input("What is your prediction?") #4
            while p not in list("123456"):
                print("Enter a valid number 1-6")
                p = input("What is your prediction?")
            p = int(p) # convert to integer
            x = randint(1, 6)
            print(x)
            if p == x:
                saldo += 5  
            elif abs(p-x) == 1:
                saldo -= 1
            else:
                saldo -= 3
            print ("saldo is {}".format(saldo))  # 5

        elif y == "s" :
            print ("stop! saldo is {}".format(saldo))
            return saldo

        else:
            print ("Enter R/r or S/s") # Not case sensitivt anymore

startsaldo = 5
saldo = main(startsaldo) #2

說明:

  1. 您不希望每次迭代都導入,導入函數總是最先執行的

  2. 正如其他人所提到的, saldo需要初始化一次。 通常,此類參數會注入函數中,並在函數退出時返回。

  3. 您要輸入"R""S"但要與"r""s"進行比較。 在Python中,大小寫很重要。
  4. 您只希望輸入1-6為有效列表(“ 123456”)返回[“ 1”,“ 2 ...],然后將其轉換為int
  5. 字符串格式化是一個非常有價值的學習工具。

通常,在Python中, var = var + 1就像var += 1一樣編寫。 同樣適用於-

暫無
暫無

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

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