• 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.')
  • 相关阅读:
    潜水员
    混合背包
    多重背包问题
    归并排序——最省时的排序
    HDU 1556 Color the ball
    2016 ACM/ICPC Asia Regional Dalian Online Football Games
    poj 2352 Stars
    poj 2299 Ultra-QuickSort
    关于原码反码补码以及位元算
    2016 湖南省省赛 Problem A: 2016
  • 原文地址:https://www.cnblogs.com/Wolf-Dreams/p/9949541.html
Copyright © 2020-2023  润新知