如何实现循环语句

时间:2018-12-07 15:15:18

标签: python

我用我想不到的方式制作了一个简单的Yahtzee游戏。当前,用户必须按Enter键(使用任何值)才能继续。我想使用循环语句,使骰子继续滚动直到Yahtzee(所有滚动的数字都相同)。我还要一个10秒的计时器。向此代码添加循环语句的最佳方法是什么?附言这不是功课,我想在Yahtzee晚上做这个游戏。我的女儿醒来后变得轻柔...哈哈

import random

while True:
    dice1 = random.randint(1,6)
    dice2 = random.randint(1,6)
    dice3 = random.randint(1,6)
    dice4 = random.randint(1,6)
    dice5 = random.randint(1,6)
    numbers = (dice1, dice2, dice3, dice4, dice5)
    sum1 = sum(numbers)
    if  sum1 == ("5" or "10" or "15" or "20" or "25"):
        print("Winner, winner, chicken dinner!", dice1, dice2, dice3, dice4, dice5)
    else:
        print("Your rolls are: ", dice1, dice2, dice3, dice4, dice5)
    input("Press return key to roll again.")

编辑:这是我的最终产品。谢谢所有帮助!!

import random
import time
input("Press return key to roll.")
for x in range(0,10000):
    numbers = [random.randint(1,6) for _ in range(5)]
    if all(x == numbers[0] for x in numbers):
        print("Winner, winner, chicken dinner!", numbers)
        input("Press return key to play again.")

    else:
        print("Your rolls are: ", numbers)        
        print("Next roll in one second.")
        time.sleep(1)   

2 个答案:

答案 0 :(得分:0)

while True:...替换为while boolean_variable: ...,并将boolean_variable的值设置为True之前的while,并设置为False您在if条件下达到了Yahtzee =>。

但是10秒计时器是什么意思? time.sleep(10)内部while循环的结尾可以实现10秒的睡眠时间。

编辑boolean_variable示例

import time
...
not_yahtzee = True
while not_yathzee:
    ....
    if sum == 5 or sum == 10 or ... :
        ...
        not_yahtzee = False
    else:
        ...
        time.sleep(10)

...代表您已经拥有的代码。如对您的问题的评论所述,if条件应该更像这个条件。 There are other ways on how to check all the elements in a list are the same

答案 1 :(得分:0)

如果您要检查所有骰子号是否相同,就这么简单。

allDice = [dice1, dice2, dice3, dice4, dice5] #List of dice variables
if all(x == allDice[0] for x in allDice): # If all dice are the same
    print("Yahtzee")
    break # Break out of while loop

拥有“计时器”的最简单方法是添加time.sleep()。您必须import time,否则它将无法正常工作。

所以更换 input("Press return key to roll again.")time.sleep(10)

这意味着每10秒骰子就会滚动一次,直到所有骰子都是相同的数字为止,如果它们相同,它将打印Yahtzee并停止循环。