我是一名大学学生程序员,最近才开始用自己的时间编码。我有一些关于如何编程的基本知识,但数组超出了我的知识范围,我正在努力学习它们。我收到了制作水果卷赌博机的挑战。我需要从可能的 6 根弦中滚出 3 根,并检查某些条件。
我已经想出了如何取出其中的 3 个并打印它们,但我需要检查是否有中奖者等。对于 3 个钟声,您将赢得大奖,对于 2 个傻瓜 + 另一个,您将赢得常规奖品,如果您滚动头骨,您将获得扣除。
我想我可以弄清楚如何通过使用 if 和 else if 语句来检查哪些是滚动的(不确定它是否有效),但是需要很多 else if 来确保考虑每个组合。
有没有更快的方法来检查重复项?或者只是使用大量 elif 语句来做到这一点。如果需要的话我可以进一步详细说明。
我已经将完整的代码粘贴在下面,如果写得不好,请原谅我,我仍然只是初学者水平,我还被告知尝试使用函数,这就是为什么有这么多。我的主要问题正如我之前所描述的,但对于整个代码的任何其他提示也将不胜感激。预先感谢。
import random
fruit = ["Cherry", "Bell", "Lemon", "Star", "Orange", "Skull"]
def fruit_machine():
credits = 10
credit = True
while credits > 0:
turn = str(input("Would you like to roll for 20p? Y/N: "))
if turn.lower() == "y":
credits = credits - 2
credits_print(credits)
elif turn.lower() == "n":
print("You have chosen not to roll.")
credit = False
else:
print("Please enter a valid option.")
return credits
return credit
def credits_print(credits):
print("You have", credits, "credits remaining")
fruit_roll()
if credits == 0:
print("--------------------------------------\nYou have no more credits remaining")
end()
def fruit_roll(credits):
roll = random.choices(fruit, k = 3)
if roll == ["Bell, Bell, Bell"]:
print("Jackpot!!!\n+5 credits")
credits = credits + 5
def end():
print(" ")
fruit_machine()
我已经创建了 end(),因为我不知道如何阻止它在达到 0 积分后循环回到 Fruit_machine 函数,它只会返回并进入负值。
有更简化的方法来检查列表中的重复项和其他条件,而不是使用一堆 if elif 语句。逻辑将根据掷骰结果的要求和组合而改变。例如,是只有 3 个铃铛中了大奖,还是除了头骨之外的任何骰子中都有 3 个?
基于您问题中的要求的 Fruit_roll 函数示例如下:
def fruit_roll(credits):
roll = random.choices(fruit, k=3)
print("Rolled: ", roll)
if roll.count("Bell") == 3:
print("Jackpot!!! +5 credits")
credits += 5
elif any(roll.count(f) == 2 for f in fruit) and "Skull" not in roll:
print("Regular prize! +2 credits")
credits += 2
if "Skull" in roll:
print("Skull rolled! -1 credit")
credits -= 1
return credits
我在查看您的代码时发现了一些其他问题。
带有滚动评估逻辑的调整后的代码如下。
import random
fruit = ["Cherry", "Bell", "Lemon", "Star", "Orange", "Skull"]
def fruit_machine():
credits = 10
while credits > 0:
turn = str(input("Would you like to roll for 20p? Y/N: "))
if turn.lower() == "y":
credits -= 2 # Deduct 20p
credits = fruit_roll(credits) # Roll fruits and update credits
credits_print(credits)
elif turn.lower() == "n":
print("You have chosen not to roll.")
break
else:
print("Please enter a valid option.")
print("--------------------------------------\nYou have no more credits remaining")
end()
def credits_print(credits):
print("You have", credits, "credits remaining")
def fruit_roll(credits):
roll = random.choices(fruit, k=3)
print("Rolled: ", roll)
if roll.count("Bell") == 3:
print("Jackpot!!! +5 credits")
credits += 5
elif any(roll.count(f) == 2 for f in fruit) and "Skull" not in roll:
print("Regular prize! +2 credits")
credits += 2
if "Skull" in roll:
print("Skull rolled! -1 credit")
credits -= 1
return credits
def end():
print("Game Over.")
fruit_machine()