python实践项目—Collatz序列

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

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值