本文主要是介绍Collatz 序列(考拉咨猜想),用Python自动化无聊的东西-chapter3,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
编写一个名为的函数collatz()
,它有一个名为的参数number
。如果number
是偶数,那么collatz()
应该打印number // 2
并返回这个值。如果number
是奇数,collatz()
则应打印并返回3 * number + 1
。
然后编写一个程序,让用户键入一个整数,并持续调用collatz()
该数字,直到函数返回值1
。(很奇怪,这个序列实际上适用于任何整数 - 早或晚,使用这个序列,你会到达1!甚至数学家不知道为什么。你的程序正在探索所谓的Collatz序列,有时称为“最简单的不可能的数学问题“)
记住input()
使用int()
函数将返回值转换为整数; 否则,它将是一个字符串值。
提示:一个整数number
是偶数,如果number % 2 == 0
是奇数number % 2 == 1
。
这个程序的输出可能看起来像这样:
输入数字: 3 10 5 16 8 4 2 1
添加try
和except
语句到上一个项目,以检测用户是否键入非整数字符串。通常,如果int()
函数ValueError
传递了一个非整数字符串,则会产生一个错误,如int('puppy')
。在该except
子句中,向用户打印一条消息,说明他们必须输入整数。
源代码:
import sys
def collatz(number):print(number)if number == 1:sys.exit()elif number % 2 == 1:t=3 * number + 1collatz(t)else:t=number // 2collatz(t)def test():print('Enter number:')try:number = int(input())collatz(number)except ValueError as verror:print('ValueError: You need input digital.')test()
这篇关于Collatz 序列(考拉咨猜想),用Python自动化无聊的东西-chapter3的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!