python基础语法——循环(二)

来源:互联网 发布:怎么做网络平台 编辑:程序博客网 时间:2024/05/20 20:18
  • 参考学习资料:《Python语言程序设计》——梁勇(著)

前言

之前发表的关于Python循环的第一个基础篇,这是后续的第二个篇章,之前已经将循环中的三种基本概念了解并进行实战熟悉,这一篇是进行实例实践并将一些易错点进行分享。

补充知识点:

循环控制

在进行今天的内容之前,我发现之前分享的博文中对循环的控制没有进行较为详细的书写,而这一部分在循环也是很重要的,新手使用循环经常忘记加上控制变量,容易导致无限循环。

  1. 使用用户交互进行控制循环:将控制循环的变量进行交互赋值,通过用户的输入进行选择是否结束循环;
  2. 使用哨兵值进行控制循环:事先定义一个特殊的变量值,这代表循环的结束,通过这个结束的标志进行控制循环,它可以是你希望停止的计数值也可以是某个特殊值如0,在循环值是0时便停止循环;
输入输出重定向:

在使用循环时,有时候会进行频繁的交互操作,而内容又很单一,这个时候可以将输入内容写为一个文本文件,通过python的输入重定向进行读取,再将结果输出;
重定向命令:

#输入重定向python SentineValue.py < input.txt#输出重定向python Script.py > output.py

重定向输入输出便不会将代码运行结果在控制台屏幕中显示,而是已文件形式存在。

易错点展示

>
1. 循环中不要使用浮点数进行比较判断,这往往因为浮点数的近似原因造成不精确的计数;
2. 最小化数值错误:在循环继续条件中使用浮点数是很有可能导致数值错误的,而当出现循环条件结果和我们预想的不一致,这个时候涉及数值一定要查看是否使用了浮点数了,这里举一个例子说明:

#eg:sum = 0i = 0.01while i <= 1.0:    sum += i    i += 0.01print(sum)

上面的代码得到的结果是49.5,但是实际正确结果是50.5,细细推想,可以发现是最后一个i值即1没有被使用,这是因为i的累加最后是稍大于1的,而这被浮点数近似表示了,所以没有进行最后一个加法,解决方法只需要添加一个整数计数器便可以解决。

实例实践

  1. 寻找最大公约数:
#!/usr/local/bin/python# encoding: utf-8'''test -- 软件流程开发学习 -- 寻找最大公约数@author:     Eric@copyright:  2017 organization_name. All rights reserved.@contact:    xj_lin@protonmail.com@version:    v1.0'''def get_gcd():    num1 = eval(input("请输入第一个数:"))    num2 = eval(input("请输入第二个数:"))    gcd = 1    k = 2    while k <= num1/2 and k <= num2/2:#一个数的公约数不会大于其一半        if num1 % k == 0 and num2 % k == 0:            gcd = k        k += 1    print(str(num1)+" 和 "+str(num2)+" 的最大公因子是 "+str(gcd)+".")if __name__ == "__main__":    get_gcd()

小结:

这是对循环部分的一个深入实践练习,但是一个真正的算法最佳实现是在效率的使用上,而最大公约数的解决方法本文展示的并非是最佳的,而且在算法的编写中还要更多的思考是否能够对代码进行最佳优化,例如n1的最大公约数是不会大于n1/2的,这便减少了循环次数,虽然在本文展示的程序中不见得起到多大作用,但是进行大型开发时一个迭代可能便是耗时的重点了,今天就到这了,共勉!

0 0
原创粉丝点击