python中的序列表示法(温文默克的学习笔记Python篇)
【人生苦短,我学Python】是众多和计算机接触过的朋友耳熟能详的段子,Python作为最近几年非常火的编程语言,因为其简洁和开源的特点,受到许许多多人的喜爱。著名房地产商潘石屹先生也在学习Python,足以可见Python的实用性和其强大的“魅力”。
笔者自身对于Python也是十分喜爱,希望能有越来越多的朋友接触这门语言。关于Python的学习,除了看一些课程视频和专业书籍外,笔者认为最重要的就是练习,无论是大的项目还是小的例子,只有在练习中不断进行尝试才能找到自己的“盲区”。
接下来,笔者开始今天的学习笔记分享——Collatz 序列。
Collatz 序列(奇偶归一猜想)又称为3n+1猜想、冰雹猜想,是指对于每一个正整数,如果它是奇数,则对它乘3再加1,如果它是偶数,则对它除以2,反复进行上述循环,最终结果都能够得到1。为了实现上述功能,首先要定义一个函数(笔者将其命名为collatz()),它有一个名为 number 的参数。如果参数是偶数,那么 collatz()就打印出 number // 2,并返回该值。如果 number 是奇数,collatz()就打印并返回 3 * number 1。
def collatz(num):
if num % 2==0:
return num // 2
else:
return 3 * num 1
然后编写一个程序,让用户输入一个整数,并不断对这个数调用 collatz(),直到函数返回值1。而要实现这一功能要注意两点,一是要记得用 int()函数将输入的值转成一个整数,否则它会是一个字符串,调用collatz()会失败。二是要不断调用collatz(),这时就需要用到“递归”了。
那什么是“递归”呢?简单来说就是不断地调用自己,举个笔者小时候听过的例子:从前有座山,山里有座庙,庙里有个老和尚,老和尚在给小和尚讲故事,说从前有座山,山里有座庙,庙里有个老和尚,老和尚在给小和尚讲故事,从前有座山... 还有从两面相对的镜子中看到的画面,其实都是抽象出来的递归现象。
不过这严格上来说并不能算是递归,因为会一直重复下去,没有终止条件,那就称为死循环了。递归需要终止条件的。利用递归的思想,可以实现很多功能,比如九九乘法表,斐波拉契数列……
回到本来的Collatz 序列这个例子,笔者定义了一个名为func()的函数,参数值为输入的正整数。在这个函数里调用collatz(),如果得出的值不是1,证明还没到最后,将其打印出来,再使用递归的思想,调用自己,参数值为目前使用collatz()得出的值,反复进行,直到最后得出的值为1。
def func(i):
if collatz(i) != 1:
print(collatz(i))
i = collatz(i)
func(i)
else:
print(collatz(i))
到了这一步基本的功能已经实现了,不过我们还可以在输入操作上进行一些完善,在用户输入数值类型错误时,给予提示。这里使用try…except语句来解决输入错误问题。
while True:
print("Enter number:")
try:
i = int(input())
func(i)
break
except ValueError:
print("请输入整数!!!")
本次的分享就到这里,今天刚好是1月1日,祝大家新的一年能够万事顺利~
pip uninstall 2019
pip install 2020
import money
from money import beauty
from money import *
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com