精进dynamo,免不了要用到python。最近好几个朋友都跟我探讨了python相关的问题。我赶紧找本书来学习一下python.在<>书里有个习题:用Python实现collatz 数列
编写一个名为 collatz()的函数,它有一个名为 number 的参数。如果参数是偶数,那么 collatz()就打印出 number //2,并返回该值。如果 number 是奇数,collatz()就打印并返回3 * number +1。然后编写一个程序,让用户输入一个整数,并不断对这个数调用 collatz(),直到函数返回值1(令人惊奇的是,这个序列对于任何整数都有效,利用这个序列,你迟早会得到1!既使数学家也不能确定为什么。你的程序在研究所谓的“Collatz序列”,它有时候被称为“最简单的、不可能的数学问题”)。
利用我有限的python知识,尝试着写了一代码:
#CAD2BIM 1095 Python 学习 Collatz数列#编写一个名为collatz()的函数,它有一个名为number 的参数。#如果参数是偶数,那么collatz()就返回number除以2#如果number 是奇数,collatz()就打印并返回3* number +1。#然后编写一个程序,让用户输入一个整数,并不断对这个数调用collatz(),直到函数返回值1def collatz(number):if number %2 ==0:print(number /2) number= number /2else:print(3* number +1) number=3 * number +1return numberprint('请随意输入一个整数')try: intNum = int(input())while intNum !=1: intNum = collatz(intNum)continueprint(intnumber)except:pass
这里没有考虑异常。同时假设输入的大于1的整数。
调试结果如下: