你的任务是简化我的程序,但保留功能
根据Collatz 猜想,任何数字都可以转换为始终以 1 结尾的数字序列。这个序列被称为数学中最简单的未解决问题,因为这个猜想从未被证明过。这个序列用文字非常简单地描述:有一个函数可以传递任何数字。如果数字是偶数,则将其除以 2(即число / 2)。如果奇数 - 那么我们将这个数字乘以 3 + 1(即число * 3 + 1)。函数返回给我们的值,我们再次代入到这个函数中(这种递归)
def collatz( number ) :
if number % 2 == 0 : # чётное
result = number // 2
if number % 2 == 1 : # нечётное
result = 3 * number + 1
print( result )
return result
error = True
while error :
error = True
try :
num = int( input( 'Введите число больше нуля: ' ) )
if num > 0 :
error = False
except :
error = True
firstTime = True
while num != 1 or firstTime :
firstTime = False
num = collatz( num )
# если number - чётное, тогда это число надо разделить на 2 без остатка
你的任务是学习如何正确地提出问题:) 或者带着这样的问题去删除主题作为学习任务
选项1:
该函数可以重写为立即处理数字 1 并显示整个组合,从第一个数字开始
这是一个没有
print函数内部的变体,即 列表形成和列表输出:好吧,1行中的解决方案:
该函数的更短版本:
所以,如果不需要检查无效数据输入,那么代码可以折叠成如下形式:
总代码 - 3 行 :)
我没有
def,有while:总共 - 14 行!