如何在 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 >= 4
,而不是 y > 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 时停止此代码骰子游戏?的主要内容,如果未能解决你的问题,请参考以下文章