如何在Python中一起使用if/while循环?
所以基本上我想这样做,生成一个随机数(我知道怎么做),如果这个数是偶数(或如何在Python中一起使用if/while循环?,python,loops,if-statement,while-loop,addition,Python,Loops,If Statement,While Loop,Addition,所以基本上我想这样做,生成一个随机数(我知道怎么做),如果这个数是偶数(或number%2==0),然后将它除以2,如果结果是奇数(或number%2>0),然后乘以3,再加1。如果这没有多大意义的话,这里有一个exmaple 选择一个像26这样的数字(这是偶数除以2) 结果是13(这是奇数,所以乘以3加1) 得到的数字是40(这一数字被2除后仍然如此) 继续此过程,直到数字==1 我不确定使用什么循环来完成此操作,因此非常感谢您的帮助!:) 如果愿意,您可以运行一些厚脸皮的代码来跟踪迭代:
number%2==0
),然后将它除以2,如果结果是奇数(或number%2>0
),然后乘以3,再加1。如果这没有多大意义的话,这里有一个exmaple
- 选择一个像26这样的数字(这是偶数除以2)
- 结果是13(这是奇数,所以乘以3加1)
- 得到的数字是40(这一数字被2除后仍然如此)
num_iterations = 0
number = # generate random number
while number != 1:
num_iterations += 1
if number % 2:
number = number * 3 + 1
else:
number /= 2
如果愿意,您可以运行一些厚脸皮的代码来跟踪迭代:
num_iterations = 0
number = # generate random number
while number != 1:
num_iterations += 1
if number % 2:
number = number * 3 + 1
else:
number /= 2
由于您不知道要使
编号
等于1需要多少步骤,即迭代次数未知,请使用while
循环:
number = # random number
while number != 1:
if number % 2:
number *= 3
number += 1
else:
number /= 2
或另一种方法:
number = # random number
while True:
if number == 1:
break
elif number % 2: # odd
number *= 3
number += 1
else: # even
number /= 2
由于您不知道要使
编号
等于1需要多少步骤,即迭代次数未知,请使用while
循环:
number = # random number
while number != 1:
if number % 2:
number *= 3
number += 1
else:
number /= 2
或另一种方法:
number = # random number
while True:
if number == 1:
break
elif number % 2: # odd
number *= 3
number += 1
else: # even
number /= 2
到目前为止,您自己做了哪些尝试?您可能想查看
而不是True
,或者研究一点递归。到目前为止,您自己做了哪些尝试?您可能想查看而不是True
,或者研究一点递归。可能的重复非常感谢!但只有一个问题-在第3行,它说“如果数字%2”,这如何澄清数字是奇数?不必是“如果数字%2>0”之类的东西?它基本上检查当数字除以2时是否有余数。如果该数字为偶数,则该数字为0,这将计算为false。如果数字是奇数,它将是1,这将作为真值计算。@user3528395number%2
返回数字的模数,并2
。如果数字等分,则返回零(如果0不执行,则返回)。任何其他结果的计算结果均为True
(如果执行1
)。还请注意,>0
在所有情况下都是不必要的,因为x%2
只能是0
或1
,它永远不能是>1
或<0
。如果您需要测试,请始终显式测试。好的,还有一个问题需要回答,以打印将代码恢复到原来的状态所需的步骤。这将允许我运行一个非常大的数字,然后打印结果和步骤,因此,如果其中有任何数字打印出来,您知道它包含在遵循此/2和*3+1模式规则的数字中。@user3528395确定这是绝对可能的。我会考虑在你的循环中放入打印语句,而循环会吐回数字以及你对它所做的任何事情。不过,我会把它留给你去实现。也许像“{}这样的东西很奇怪,所以*3+1”。格式(数字)
非常感谢!但只有一个问题-在第3行,它说“如果数字%2”,这如何澄清数字是奇数?不必是“如果数字%2>0”之类的东西?它基本上检查当数字除以2时是否有余数。如果该数字为偶数,则该数字为0,这将计算为false。如果数字是奇数,它将是1,这将作为真值计算。@user3528395number%2
返回数字的模数,并2
。如果数字等分,则返回零(如果0不执行,则返回)。任何其他结果的计算结果均为True
(如果执行1
)。还请注意,>0
在所有情况下都是不必要的,因为x%2
只能是0
或1
,它永远不能是>1
或<0
。如果您需要测试,请始终显式测试。好的,还有一个问题需要回答,以打印将代码恢复到原来的状态所需的步骤。这将允许我运行一个非常大的数字,然后打印结果和步骤,因此,如果其中有任何数字打印出来,您知道它包含在遵循此/2和*3+1模式规则的数字中。@user3528395确定这是绝对可能的。我会考虑在你的循环中放入打印语句,而循环会吐回数字以及你对它所做的任何事情。不过,我会把它留给你去实现。也许像“{}这样的东西是奇数,所以*3+1”。格式(数字)