Python Fruit Machine



我正在为一台水果机编写一个代码,该代码以随机方式选择符号,但无法找出哪里出了问题。这是代码:

import random
credit  = 100
def roll(credit):
sym1 = random.choice(symbols)
sym2 = random.choice(symbols)
sym3 = random.choice(symbols)
print("---Symbols---")
print(sym1, sym2, sym3, "n")
if (sym1 == sym2 or sym1 == sym3 or sym2 == sym3) and not(sym1 == sym2 == sym3):
print("Winner! +50p")
credit += 50
return credit
elif (sym1 == sym2 == sym3) and sym1 != "Bell":
print("Winner! +£1")
credit = credit + 100
return credit
elif (sym1 == sym2 == sym3) and (sym1 == "Bell"):
print("Jackpot! +£5")
credit = credit + 500
return credit
elif (sym1 == sym2 == "Skull" or sym1 == sym3 == "Skull" or sym2 == sym3 == "Skull") and not(sym1 == sym2 == sym3):
print("Two Skulls! -£1")
credit = credit - 100
return credit
elif (sym1 == sym2 == sym3) and sym1 == "Skull":
print("Three Skulls! Lose all credit")
credit = 0
return credit
else:
print("Loser!")


symbols = ["Cherry", "Bell", "Lemon", "Orange", "Star", "Skull"]
print("You have", credit, "p", "n")

while True:
print("")
play = input("Roll costs 20p. Would you like to roll? yes/no: ")
print("")
if play == "yes" or "y" or "Yes" or "Y":
if credit >= 20:
roll(credit)
credit -= 20
print("Credit is", credit, "p")
else:
print("You do not have enough money to roll!")

这里的问题是,当一个人获胜时,信用不会被添加到信用变量中。然而,20便士总是被拿走。如果能在这里得到帮助,我将不胜感激。

感谢

您执行roll(credit),但不将值分配回credit。你需要做credit = roll(credit)

还有:

  1. roll函数的else子句中添加return语句,否则在第一次失败后游戏结束,因为您将获得TypeError: unsupported operand type(s) for -=: 'NoneType' and 'int'

  2. while循环的else子句中添加break语句,否则您必须在回答"否"后手动停止代码。

完整的代码,包括Farhan和Chris_Rands的建议,看起来像:

def roll(credit):
sym1 = random.choice(symbols)
sym2 = random.choice(symbols)
sym3 = random.choice(symbols)
print("---Symbols---")
print(sym1, sym2, sym3, "n")
if (sym1 == sym2 or sym1 == sym3 or sym2 == sym3) and not(sym1 == sym2 == sym3):
print("Winner! +50p")
credit += 50
return credit
elif (sym1 == sym2 == sym3) and sym1 != "Bell":
print("Winner! +£1")
credit = credit + 100
return credit
elif (sym1 == sym2 == sym3) and (sym1 == "Bell"):
print("Jackpot! +£5")
credit = credit + 500
return credit
elif (sym1 == sym2 == "Skull" or sym1 == sym3 == "Skull" or sym2 == sym3 == "Skull") and not(sym1 == sym2 == sym3):
print("Two Skulls! -£1")
credit = credit - 100
return credit
elif (sym1 == sym2 == sym3) and sym1 == "Skull":
print("Three Skulls! Lose all credit")
credit = 0
return credit
else:
print("Loser!")
return credit
symbols = ["Cherry", "Bell", "Lemon", "Orange", "Star", "Skull"]
print("You have", credit, "p", "n")

while True:
print("")
play = input("Roll costs 20p. Would you like to roll? yes/no: ")
print("")
if play in {"yes","y","Yes","Y"}:
if credit >= 20:
credit = roll(credit)
credit -= 20
print("Credit is", credit, "p")
else:
print("You do not have enough money to roll!")
break

最新更新