Collatz序列题意说明
编写一个名为collatz()的函数,它有一个名为number 的参数。如果参数是偶数,那么collatz()就打印出number // 2,并返回该值。如果number 是奇数,collatz()就打印并返回3 * number + 1。 然后编写一个程序,让用户输入一个整数,并不断对这个数调用collatz(),直到函数返回值1(令人惊奇的是,这个序列对于任何整数都有效,利用这个序列,你迟早会得到1!既使数学家也不能确定为什么。你的程序在研究所谓的“Collatz序列”,它有时候被称为“最简单的、不可能的数学问题”)。
Collatz序列具体实现代码
#-*- conding: utf8 -*- ############################################ #author:wolf_dreams #time:2018-11-12 #blog:https://www.cnblogs.com/Wolf-Dreams/ ############################################ def collatz(number): if number % 2 == 0: return number // 2 elif number % 2 == 1: return 3 * number + 1 try: print(‘Enter number:‘) input_Number = int(input()) while True: input_Number=collatz(input_Number) print(input_Number) if input_Number == 1: break except ValueError: print(‘Input format is incorrect,please enter an integer.‘)
Collatz序列脚本运行结果:
Enter number: 54 27 82 41 124 62 31 94 47 142 71 214 107 322 161 484 242 121 364 182 91 274 137 412 206 103 310 155 466 233 700 350 175 526 263 790 395 1186 593 1780 890 445 1336 668 334 167 502 251 754 377 1132 566 283 850 425 1276 638 319 958 479 1438 719 2158 1079 3238 1619 4858 2429 7288 3644 1822 911 2734 1367 4102 2051 6154 3077 9232 4616 2308 1154 577 1732 866 433 1300 650 325 976 488 244 122 61 184 92 46 23 70 35 106 53 160 80 40 20 10 5 16 8 4 2 1
Collatz序列提示说明:
str()与int()转换说明: input()的返回值为str字符串型,需要使用int()函数将其转成一个整数,否则程序在运行的时候会报错 奇数和偶数如何判断说明: 如果number % 2 == 0,则整数number就是偶数;如果number % 2 == 1,则整数number就是奇数
Collatz序列输入验证:
在前面Collatz序列的项目中添加try 和except 语句,检测用户是否输入了一个非整数的字符串。正常情况下,int()函数在传入一个非整数字符串时,会产生ValueError 错误,比如int(‘puppy‘)。在except 子句中,向用户输出一条信息,告诉他们必须输入一个整数。
Collatz序列输入验证具体实现代码:
try: print(‘Enter number:‘) input_Number = int(input()) while True: input_Number=collatz(input_Number) print(input_Number) if input_Number == 1: break except ValueError: print(‘Input format is incorrect,please enter an integer.‘)
原文地址:https://www.cnblogs.com/Wolf-Dreams/p/9949541.html
时间: 2024-10-10 00:15:40