我正在编写一个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和其他基本编程语言方面有一些经验。这看起来应该可以工作。
答案 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
说明:
您不想在每次迭代时导入,导入函数总是先进行
saldo
提到的只需要初始化一次。通常,这些参数会在函数中注入,并在函数退出时返回。
"R"
或"S"
,但要与"r"
和"s"
进行比较。在Python中,案例很重要。通常,var = var + 1
在Python中的编写方式与var += 1
类似。同样适用于-
。