如何在 y>4 时停止此代码骰子游戏?

Posted

技术标签:

【中文标题】如何在 y>4 时停止此代码骰子游戏?【英文标题】:How do I stop this code dice game at y>4? 【发布时间】:2022-01-12 00:17:40 【问题描述】:

给定的问题是:

“你最多可以掷六次骰子。你可以随时停下来,然后 你得到该卷上显示的美元金额。例如,Max 掷出一个 2、4、3、6,决定停下来。他赢了 6 美元。汉斯掷出 3、2、4、5 并停止。大卫赢了 5 美元。假设你一直滚动直到你得到 4或更大,然后你停止。你通常会赢多少钱 每部戏?如果最大可能的掷骰数从 6比4?”

我写的代码是:

import random

rounds = 0
#x = [1,2,3,4,5,6]
#y = 0

while rounds < 6:
    rounds =  rounds + 1
    max_rolls = 1

    while max_rolls < 6 :
        #x_trial = (random.choice(x))
        x_trial = random.randint(1,6)


        if x_trial < 4:
        #if x_trial < 4  :
            max_rolls = max_rolls + 1
            #y = 0
            #max_rolls = 1
        else :
            y = x_trial
            break


    print ("Round number:", rounds)
    print("Times rolled:", max_rolls)
    print("Your score:", y)
    print ("Your prize:", y);

我得到的输出是:

Round number: 1
Times rolled: 1
Your score: 5
Your prize: 5
Round number: 2
Times rolled: 2
Your score: 6
Your prize: 6
Round number: 3
Times rolled: 1
Your score: 4
Your prize: 4
Round number: 4
Times rolled: 1
Your score: 6
Your prize: 6
Round number: 5
Times rolled: 3
Your score: 6
Your prize: 6
Round number: 6
Times rolled: 1
Your score: 5
Your prize: 5

我想做什么:

如果 y > 4,我希望代码停止。我不希望它运行 6 轮。我希望它在 y > 4 时停止。

【问题讨论】:

你应该了解break声明。 好的,我会调查的。谢谢! “继续滚动,直到获得 4 或更高”。您希望 y &gt;= 4,而不是 y &gt; 4 来满足要求。 【参考方案1】:

你的逻辑看起来不对劲。我注意到的第一件事是你有两个嵌套循环。你打破了内在的,但外在的仍然是完整的。这就是为什么你不会在你想打破的时候打破。

我认为你根本不需要嵌套循环,除非你想要一个用于不同玩家的外循环,或者允许某人输入最大掷骰数。

另外,明智地选择变量名称。您有一个名为 max_rolls 的变量,您将其设置为 1,然后递增。使用该名称,我希望将其设置为 4 或 6,并且我希望将另一个名为 roll_count 或类似名称的变量设置为 1(或 0)然后递增,并与 max_rolls 进行比较。你知道选择这样的名字是如何让你的代码更具可读性的吗?

最后,Python 有一个用于递增计数器的简写约定。与其说var = var + 1,不如说var += 1。它更短更直接,使代码更具可读性。

【讨论】:

非常感谢!这里有很多帮助!非常感激。我是编码新手,我正在自学,所以到目前为止我的基础知识有点混乱【参考方案2】:

首先,在脚本的开头导入 sys,然后在第一个 while 语句之后插入以下代码:

if y > 4:
    sys.exit()

【讨论】:

谢谢。此更改确实在 y>4 时停止程序,但结果是 y>4 的多个实例,而我希望代码在 y>4 时停止在第一个实例。 更改后的结果是:Round number: 1 Times rolled: 2 Your score: 4 Your prize: 4 Round number: 2 Times rolled: 2 Your score: 4 Your prize: 4 Round number: 3 Times rolled: 1 Your score: 4 Your prize: 4 Round number: 4 Times rolled: 1 Your score: 4 Your prize: 4 Round number: 5 Times rolled: 1 Your score: 6 Your prize: 6 AND Round number: 1 Times rolled: 1 Your score: 4 Your prize: 4 Round number: 2 Times rolled: 3 Your score: 6 Your prize: 6

以上是关于如何在 y>4 时停止此代码骰子游戏?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Unity 中的 Photon 和骰子在棋盘游戏中创建回合制经理?

tyvj P4879骰子游戏

如何更改此贪心算法以预测最高总分?

基础入门题053骰子游戏

投骰子的随机游戏

如何将此游戏代码转换为 Swift 4?