Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中一起使用if/while循环?_Python_Loops_If Statement_While Loop_Addition - Fatal编程技术网

如何在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除后仍然如此)
继续此过程,直到数字==1

我不确定使用什么循环来完成此操作,因此非常感谢您的帮助!:)

如果愿意,您可以运行一些厚脸皮的代码来跟踪迭代:

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,这将作为真值计算。@user3528395
number%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,这将作为真值计算。@user3528395
number%2
返回数字的模数,并
2
。如果数字等分,则返回零(如果0不执行,则返回
)。任何其他结果的计算结果均为
True
如果执行1
)。还请注意,
>0
在所有情况下都是不必要的,因为
x%2
只能是
0
1
,它永远不能是
>1
<0
。如果您需要测试,请始终显式测试。好的,还有一个问题需要回答,以打印将代码恢复到原来的状态所需的步骤。这将允许我运行一个非常大的数字,然后打印结果和步骤,因此,如果其中有任何数字打印出来,您知道它包含在遵循此/2和*3+1模式规则的数字中。@user3528395确定这是绝对可能的。我会考虑在你的
循环中放入打印语句,而
循环会吐回数字以及你对它所做的任何事情。不过,我会把它留给你去实现。也许像
“{}这样的东西是奇数,所以*3+1”。格式(数字)