最近开始整理笔记内容发现CDSN的博客内容发现很久没有更新的了,现在全部把之前的更新一遍。
目录
程序设计基本结构
任何算法(程序)都可以由顺序结构、选择结构和循环结构 这三种基本结构组合来实现。
用程序流程图是一个很好的习惯,最早接触编程的时候,并没有很强的写程序流程图的意识,因为那时候的代码量都不是很大,可后面再写课程设计和单片机的程序的时候就发现流程图能够很大程度上帮助你理清楚程序的思路,而且也能够很好的找到bug所在。
流程图
流程图的绘制在电脑上我用的是Visio,还有一些在线的编辑如draw.io,ProcessOn这些网站都可以用。
流程图一般包括:
表示相应操作的框;
带箭头的流程线;
框内外必要的文字说明。
顺序结构
顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。
选择结构
选择结构用于判断给定的条件,根据判断的结果判断某些条件,根据判断的结果来控制程序的流程。
简单分支(以Python语言为例):用条件语句if来实现分支。
先判断<condition>
条件:true,则执行<body>
;再转向下一条语句;false,则直接跳过<body>
;转向下一条语句;
简单的条件表达式一般为 <左表达式> <比较符> <右表达式>
条件吗满足就是true
,否则就是false
if <condition>: #<condition>表示的是布尔表达式
<body> #<body>是条件满足时你想要执行的程序
多分支: 多分支决策用于解决复杂问题
比如数学上求解二元一次方程式delta就用三个情况 大于0,小于0,和等于0 。此时用if elif-else
来实现多分支。
从上到下逐一判断,满足其中一个时就执行语句然后结束,不满足就判断下一个,若都不满足就执行else的语句,else可以省略
if <condition1>:
<body1>
elif <condition2>:
<body2>
elif <condition3>:
<body3>
......
else:
<default>
循环结构
循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构。循环结构可以看成是一个条件判断语句和一个向回转向语句的组合。
有限次循环 (for循环)
for <var> in <sequence>: #<var>表示循环变量
<body>
无限循环 (while循环/条件循环)
while <condition>:
<body>
当条件<condition>
为真
时,循环体重复执行;当条件<condition>
为假
时,循环终止
break 语句
- 跳出最内层for/while 循环
continue语句
-结束本次循环
for… else: …;while… else:
-…语句与循环的搭配使用,else:后的表达式在for循环列表遍历完毕后或while条件语句不满足的情况下执行
for <var> in <sequence>:
<body>
else:
<body>
#########################
while <condition>:
<body>
else:
<body>
布尔表达式
条件语句和循环语句都使用布尔表达式作为条件,布尔值为真或假,以False和True表示,前面经常使用布尔表达式比较两个值,如:while x>=0
布尔操作符
布尔操作符: and,or和 not
布尔运算符and和or用于组合两个布尔表达式,并产生一个布尔结果
<expr> and <expr>
<expr> or <expr>
not运算符是一个一元运算符,用来计算一个布尔表达式的反
not <expr>
布尔表达式-简洁表示
inp=input("请输入一个字母,默认为a:")
if inp!='':
intop=inp
else:
intop='a'
print(intop)
请输入一个字母,默认为a:a
a
等价于
inp=input("请输入一个字母,默认为a:")
intop=inp or 'a'
print(intop)
请输入一个字母,默认为a:q
q
等价于
inp=input("请输入一个字母,默认为a:") or 'a'
print(inp)
请输入一个字母,默认为a:
a
从而达到了简化的作用
异常处理语句
如果处理错误或特殊情况的分支语句过多,那么处理正常 情况的主程序就会变得不清晰易读。Python使用try…except…来进行异常处理,基本格式如下:
try :
<body>
except <ErrorType1>:
<handler1>
except <ErrorType1>:
<handler2>
except :
<handler0>
当Python解释器遇到一个try语句,它会尝试执行try
语句体<body>
内的语句如果没有错误,控制转到try-except
后面的语句如果发生错误,Python解释器会寻找一个符合该错误的异常语句,然后执行处理代码
关于异常情况的处理可以参考该博文http://blog.csdn.net/vickey1018/article/details/51075277
异常情况列表(转自上述博文)
BaseException
+-- SystemExit
+-- KeyboardInterrupt
+-- GeneratorExit
+-- Exception
+-- StopIteration
+-- StandardError
| +-- BufferError
| +-- ArithmeticError
| | +-- FloatingPointError
| | +-- OverflowError
| | +-- ZeroDivisionError 除数为0
| +-- AssertionError
| +-- AttributeError 尝试访问未知的对象属性
| +-- EnvironmentError
| | +-- IOError 输入输出错误(比如你要读的文件不存在)
| | +-- OSError
| | +-- WindowsError (Windows)
| | +-- VMSError (VMS)
| +-- EOFError
| +-- ImportError
| +-- LookupError
| | +-- IndexError 索引超出序列范围
| | +-- KeyError 请求一个不存在的字典关键字
| +-- MemoryError
| +-- NameError 尝试访问一个没有申明的变量
| | +-- UnboundLocalError
| +-- ReferenceError
| +-- RuntimeError
| | +-- NotImplementedError
| +-- SyntaxError 语法错误
| | +-- IndentationError
| | +-- TabError
| +-- SystemError
| +-- TypeError
| +-- ValueError 传给函数的参数类型不正确,比如给int()函数传入字符串形
| +-- UnicodeError
| +-- UnicodeDecodeError
| +-- UnicodeEncodeError
| +-- UnicodeTranslateError
+-- Warning
+-- DeprecationWarning
+-- PendingDeprecationWarning
+-- RuntimeWarning
+-- SyntaxWarning
+-- UserWarning
+-- FutureWarning
+-- ImportWarning
+-- UnicodeWarning
+-- BytesWarning