美文网首页
Day032|《Python编程快速上手——让繁琐工作自动化》第

Day032|《Python编程快速上手——让繁琐工作自动化》第

作者: 龙渊的宝藏 | 来源:发表于2021-03-27 21:53 被阅读0次

今天是Andy学Python的第32 天哦! 

大家好,我是Andy。

今天练习了《Python编程快速上手——让繁琐工作自动化》第3章实践项目: Collatz序列。

01.项目需求

# 编写一个名为collatz()的函数,它有一个名为number的参数。

# 如果参数是偶数,那么collatz()就打印出number // 2,并返回该值。

# 如果参数是奇数,collatz()就打印并返回3 * number + 1。

# 然后编写一个程序,让用户输入一个整数,并不断对这个数调用collatz(),直到函数返回值1。

(令人惊奇的是,这个序列对于任何正整数都有效,利用这个序列, 你迟早会得到 1!既使数学家也不能确定为什么。你的程序在研究所谓的“Collatz 序列”,它有时候被称为“最简单的、不可能的数学问题” 

02.py001 

# 定义collatz函数

def collatz(number):

    if number % 2 == 0:

        number = number // 2

        print(number)

        return number

    else:

        number = 3 * number + 1

        print(number)

        return number

number = int(input("请输入一个整数:\n"))

while True:

    number = collatz(number)

    if number == 1:

        break

出现了三种状况:

2.1输入正整数

2.2输入字母

2.3输入负整数

出现了死循环,程序进入忙碌状态。

需优化部分:

一是if...else中出现重复的return number,可精简;

二是输入任意字母,ValueError,用except排除。

三是负整数死循环,可在while循环中定义条件number <= 1 时跳出;

顺带提一下,为中止死循环,我采用了ctrl+c,好像没什么用,Jupyter右上角的小圆圈还是实心的。点击“停止服务”的小方块,没反应,停一会儿,就出现了网页打不开,提示内存不足,刷新页面,再次打开,还是同样情况。关机重启,再次打开,重复以上步骤,还是不行。最后在Home Page将文档(后缀名*.ipynb)删除,新建一个文档,idle状态仍是忙碌,多次点击“停止服务”的小方块,终于将状态调整为空闲。

03.py002

# 定义collatz函数

def collatz(number):

    if number % 2 == 0:

        number = number // 2

        print(number)

    else:

        number = 3 * number + 1

        print(number)

    return number

try:

    number = int(input("请输入一个整数:"))

    while True:

        number = collatz(number)

        if number <= 1:

            break    

except ValueError:

    print("请重新输入一个整数")

运行结果:

51Day Day up!

向上向善,日进一步!

每天学习,努力成长!

定个小目标,开启成长的旅程,遇见更好的自己。

这是我们和自己的约定,许诺自己不负韶华。

路虽远,行则将至;事虽难,做则必成。

成长的最好时机,就是当下。

相关文章

网友评论

      本文标题:Day032|《Python编程快速上手——让繁琐工作自动化》第

      本文链接:https://www.haomeiwen.com/subject/gmdkhltx.html