如何在Python中同时使用if和while循环?

1 投票
2 回答
22330 浏览
提问于 2025-04-18 02:42

基本上,我想做的是生成一个随机数(这个我知道怎么做)。如果这个数字是偶数(也就是 number%2 == 0),那么就把它除以2;然后如果得到的数字是奇数(也就是 number%2 > 0),那么就乘以3再加1。如果这听起来不太明白,下面有个例子:

  • 先选一个数字,比如26(这是偶数,所以除以2)
  • 得到的结果是13(这是奇数,所以乘以3再加1)
  • 得到的结果是40(这是偶数,所以再除以2)

继续这个过程,直到数字变成1为止。

我不太确定该用什么循环来实现这个,所以任何帮助都非常感谢! :)

2 个回答

0

因为你不知道要多少步才能把这个number变成一,也就是说你不知道需要多少次循环,所以可以用一个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
4
number = # generate random number
while number != 1:
    if number % 2: # if number is odd, multiply by 3, add 1
        number *= 3
        number += 1
    else: # if number is even, divide by 2
        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

撰写回答