我最近开始学习 Python。我正在课程的控制结构部分做一些练习,一切都很顺利,直到我被最后一个问题难住了。我已经研究了三天了,我很确定解决方案很明显。这是练习中的描述:
从任何数字开始。如果这个数能被 3 整除,就除以 3。否则,给这个数加 2。最终,无论从什么数开始,这个数列都会遇到 1。例如,假设我们从数 5 开始:5 不能被 3 整除,所以 5 + 2 = 7 7 不能被 3 整除,所以 7 + 2 = 9 9 可以被 3 整除,所以 9 / 3 = 3 3 可以被 3 整除,所以 3 / 3 = 1
从 5 开始,此序列在 4 次迭代中收敛于 1:5 -> 7, 7 -> 9, 9 -> 3, 3 -> 1。
编写一个名为 Joyner 的函数。Joyner 应该有一个参数,一个整数。它应该返回第一次达到 1 所需的迭代次数。
我运行了我在页面上编写的函数,该函数用不同的整数测试我的函数。每次它给我一个错误(说明预期的迭代次数和我的程序计算的次数)时,我设法修复了该整数的程序,但是下面测试的整数又会给我一个错误。下面的代码是我决定来这里寻求帮助之前的最后重写。
def joyner(num):
count = 0
while num % 3 != 0:
# print("num not divisible by 3")
num = num + 2
# print("added 2")
count += 1
# print(count)
if num % 3 == 0:
# print("num is divisible by 3")
num /= 3
# print("divided by 3")
count += 1
# print(count)
while num % 3 == 0:
# print("num is divisible by 3")
num /= 3
# print("divided by 3")
count += 1
# print(count)
return count
结果如下:
我们发现您提交的内容存在以下问题:
我们使用 num = 15 测试了您的代码。我们希望 Joyner 返回 int 5。但是,它返回了 int 1。
我们使用 num = 29 测试了您的代码。我们希望 Joyner 返回 int 10。然而,它返回了 int 3。
我们使用 num = 65 测试了您的代码。我们希望 Joyner 返回 int 8。但是,它返回了 int 3。
我们使用 num = 12 测试了您的代码。我们希望 Joyner 返回 int 3。但是,它返回了 int 1。
我们使用 num = 32 测试了您的代码。我们希望 Joyner 返回 int 6。但是,它返回了 int 4。
请注意,这些错误可能会阻止我们以其他方式检查您提交的内容,因此修复这些问题可能会导致下次出现其他问题。继续尝试!这就是调试的全部内容。
您提交的以下内容是正确的:
我们希望在您的代码中找到一个名为 Joyner 的函数,我们做到了。
我们使用 num = 5 测试了您的代码。我们希望 Joyner 返回 int 4,并且确实如此。
我们使用 num = 27 测试了您的代码。我们希望 Joyner 返回 int 3,并且确实如此。
我们使用 num = 16 测试了您的代码。我们希望 Joyner 返回 int 3,并且确实如此。
LEATH
米脂
相关分类