在MOOC上,学习了北京理工大学嵩天老师的Python语言程序设计,此为学习笔记记录,备查,备翻阅复习。
程序流程图
是分析程序流程的基本方法
任何程序都是由以下三种结构组合而成
-
顺序结构
-
选择结构
-
循环结构
简单分支结构
除数字以外,字符或字符串也可以按照字典顺序用于条件比较。
实例:求解一元二次方程的根
import math
def main():
print("please input the real solution to a quadratic\n")
a,b,c = eval(input("Please enter the coefficients (a,b,c):"))
delta = b*b-4*a*c
if delta <0:
print("\nThe equation has no real roots!")
else:
discRoot = math.sqrt(delta)
root1 = (-b + discRoot) / (2*a)
root2 = (-b - discRoot) / (2*a)
print("\nThe solutions are: ", root1, root2)
main()
多分支结构
结果复杂问题的手段。
if-elif-else结构,可以解决嵌套分支程序易读性差的问题。
实例:求解一元二次方程的根的优化
import math
def main():
print("please input the real solution to a quadratic\n")
a,b,c = eval(input("Please enter the coefficients (a,b,c):"))
delta = b*b-4*a*c
if a ==0:
x = -b/c
print("\nThere is a solution",x)
elif delta <0:
print("\nThe equation has no real roots!")
elif delta ==0:
x = -b/(2*a)
print("\nThere is a double root at ",x)
else:
discRoot = math.sqrt(delta)
root1 = (-b + discRoot) / (2*a)
root2 = (-b - discRoot) / (2*a)
print("\nThe solutions are: ", root1, root2)
main()
异常处理
是为了捕获程序在执行时会发生的异常。
采用try–except语句,可以捕捉任何类型的错误。一个try语句可以接多个except语句,except语句执行时有点类似if语言,逐个测试是否有符合的error类型进行执行。
还可以可选地使用else finally语句,但是else语句必须在finally语句之前。而finally语句必须在整个语句的最后部分。
try体内如果无异常产生,则执行else语句,finally后面的子句表示无论是否发生异常都要执行。
def main():
try:
number1, number2 = eval(input("Enter two numbers, separated by a comma:"))
result = number1 /number2
except ZeroDivisionError:
print("Division by zero!")
except SyntaxError:
print("A comma may be missing in the input!")
except:
print("Something wrong with the input!")
else:
print("No exceptions, the result is ",result)
finally:
print("executing the final clause.")
main()
进一步利用异常处理机制完善上述求解一元二次方程根的实例
import math
def main():
print("This program finds the real solutions to a quadratic.\n")
try:
a,b,c = eval(input("Please enter the coefficients (a,b,c):"))
discRoot = math.sqrt(b*b-4*a*c)
root1 = (-b+discRoot)/(2*a)
root2 = (-b-discRoot)/(2*a)
print("\nThe solutions are: ", root1, root2)
except ValueError as excObj:
if str(excObj) == "math domain error":
print("No Real Roots.")
else:
print("You didn't give me the right number of coefficients.")
except NameError:
print("\nYou didn't enter three numbers.")
except TypeError:
print("\nYour inputs were not at all numbers.")
except SyntaxError:
print("\nYour input was not in the correct form. Missing comma?")
except:
print("\nSomething went wrong, sorry!")
main()
实例分析:三者最大
- 通盘比较策略
- 决策树策略
- 顺序处理:逐个扫描每个值,使用max变量保留最大值。是最简洁的方法。
- Python自带的max()函数
基本循环结构
for循环:程序开始时,必须提供输入数字总数,就是需要提供固定循环次数。for循环不需要初始化i。
无限循环模式: while语句。 while循环首先要初始化i。
for/while中的break 和continue用法:
break语句 跳出整个循环。
continue语句 结束本次循环,而不终止整个循环的执行。
for/while中的else用法:else是和for处于同一缩进级别,与for搭配,只有当for循环中,没有break语句打断,并且循环遍历列表执行完毕的情况下,才执行else语句。
#else_for_while.py
for n in range(2,10):
for x in range(2,n):
if n % x == 0:
print(n, "equals",x,"*",n//x)
break
else:
# loop fell through without finding a factor
print(n,"是一个质数。")
#output
"""
2 是一个质数。
3 是一个质数。
4 equals 2 * 2
5 是一个质数。
6 equals 2 * 3
7 是一个质数。
8 equals 2 * 4
9 equals 3 * 3
""""
通用循环构造方法
交互式循环:即时问输入值是否还要继续输入值进行求平均值。
哨兵循环:执行循环直到遇到特定的值时,循环语句才终止执行
文件循环
面向文件的循环方法。readlines()
### 嵌套循环
外层循环嵌套内层循环。
死循环
即终止循环的条件永远无法满足,产生死循环。
但死循环往往是单片机编程的普遍用法。
布尔表达式
布尔值只有两个取值。
python提供了三个布尔操作符, and , or, not.优先级是 not, or, and。 建议用括号明确顺序。
布尔代数。