骰子预测游戏的python

时间:2017-10-18 10:46:41

标签: python prediction dice

我正在编写一个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()

随机部分正在运行,但不是saldo部分,我无法弄清楚出了什么问题。我是Python的新手,但在Javascript和其他基本编程语言方面有一些经验。这看起来应该可以工作。

2 个答案:

答案 0 :(得分:2)

您的saldo在while循环内初始化。

这意味着每次从循环开始时开始,你的saldos都会设置为5。

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

saldo = 5移到while循环之外。

答案 1 :(得分:2)

看看下面的代码。我冒昧地做出了额外的改变,使整个事情变得更加恐怖和高效。

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. 只需要初始化一次。通常,这些参数会在函数中注入,并在函数退出时返回。

  4. 您要求"R""S",但要与"r""s"进行比较。在Python中,案例很重要。
  5. 您只希望输入1-6为有效列表(“123456”)返回[“1”,“2 ...] 然后我们将其转换为int
  6. 字符串格式化是一个非常有价值的学习工具。
  7. 通常,var = var + 1在Python中的编写方式与var += 1类似。同样适用于-