python - 无法让我的函数在 Python 中满足 while 循环条件
问题描述
我的目标是:在 hog.py 中实现 roll_dice 函数。它有两个参数:一个称为 num_rolls 的正整数(将掷骰子的数量)和一个骰子函数(模拟单个骰子掷骰结果的函数)。它返回每轮掷骰子所获得的分数:结果的总和或 1。
当任何骰子结果为 1 时,它返回 1。
当我在 PyCharm 中调试时,它说 current_roll = 2,current_value = 4,num_rolls = 5 和 total_sum = 4。这让我相信它只经过了一次循环,因为 current_roll 应该是 5,因为 num_rolls 是 5。另外,因为 total_sum 只是 current_value。我试过移动变量赋值,但没有任何效果。
谁能给我任何指导,说明为什么我的函数在 current_roll 不 < num_rolls 之前不循环?抱歉,如果不清楚,我是初学者。我可以提供任何澄清
def roll_dice(num_rolls, dice=six_sided):
current_roll = 1
total_sum = 0
current_value = dice()
while current_roll < num_rolls:
current_roll += 1
if current_value == 1 or total_sum == 1:
return total_sum == 1
else:
total_sum = total_sum + current_value
return total_sum
这是我的代码现在更新的内容:
total_sum = 0
current_roll = 0
while current_roll < num_rolls:
current_roll += 1
current_value = dice()
if current_value == 1 or total_sum == 1:
total_sum = 1
return total_sum
else:
total_sum += current_value
return total_sum
我更新了我的代码,但它仍然没有通过。我将 dice() 函数添加到 while 循环中并更改了总和 = 1。你知道为什么它仍然没有通过吗?
解决方案
您在 while 循环内返回,这将终止循环。
将您的 return 语句移到 while 循环之外
编辑:
在 while 循环内移动骰子函数调用。在您的代码的当前状态下,它只会掷一次骰子,然后检查掷骰num_rolls
次数。
你也回来了,total_sum == 1
这将返回True
或False
不确定这是否是有意的
推荐阅读
- git - 在 git show 之后缺少参数:“-c”vim 错误
- r - 如何将函数应用于由 R 中的分类变量过滤的一系列数据框
- json - Powershell convertfrom-json 从 JSON 中分离出两组值
- java - 如何使用 Java 更新 Pentaho 转换连接数据?
- jenkins - Chaos Monkey 可以与通过 jenkins 构建的 GCE 实例一起使用吗?
- python - 漂亮地显示一个句子及其语法依赖
- html - Swift NSAttribured String CSS 属性宽度不起作用
- angular - 在模型中直接映射 Reactive FormGroup 中的类对象、Setvalue 和 getvalue
- angular - ngx-errors 和 angular6:无法解析 rxjs/Observable
- vue.js - 如何可视化vue无限更新循环的无限循环