第三章
程序的描述方式
1.IPO方式(前文有涉及)
2.程序流程图(学过软件工程的厚米应该很熟悉)
3.伪代码
顺序结构
赋值语句、输入输出语句都是顺序结构;
选择结构if
Python中if语句的一般形式如下所示:
if condition_1:
statement_block_1
elif condition_2:
statement_block_2
else: statement_block_3
- 如果 "condition_1" 为 True 将执行 "statement_block_1" 块语句
- 如果 "condition_1" 为False,将判断 "condition_2"
- 如果"condition_2" 为 True 将执行 "statement_block_2" 块语句
- 如果 "condition_2" 为False,将执行"statement_block_3"块语句
Python 中用 elif 代替了 else if,所以if语句的关键字为:if – elif – else。
#实例
var1 = 100
if var1:
print ("1 - if 表达式条件为 true")
print (var1)
var2 = 0
if var2:
print ("2 - if 表达式条件为 true")
print (var2)
print ("Good bye!")
执行以上代码,输出结果为:
1 - if 表达式条件为 true 100 Good bye!
注意:当我们使用if语句时,当我们只有一个语句,可直接写在冒号后;
双分支结构if-else
在python中可以简化,假设原本是:
num=eval(input('请输入中奖号码:'))
result='恭喜你中奖了'if num==123456 else'遗憾您未中奖'
可简化为:print('恭喜你中奖了'if num==123456 else'遗憾您未中奖')
多分支结构
嵌套if的使用
多个条件连接
模式匹配
模式匹配可以被简单地认为是其它语言中switch的promax版本,仅python3.11支持;
使用match来实现匹配;
循环结构
#遍历判断100-999间的水仙花数()各个位的数字立方和等于数字本身 for i in range(100,1000): sd=i%10 ten=i//10%10 bai=i//100 if sd**3+ten**3+bai**3==i: print(i,'是水仙花数')
for....else结构只有在上for正常结束才会运行;
循环语句
模拟登录:
i=0
while(i<3):
user_name=input('please input user_name')
pwd=input('please input pwd')
if user_name=123456 and pwd=123654:
print('londing-------')
i=3
else
i+=1
print('chance--')
if i==3:
print('Sorry,you have no chance!')
嵌套循环
最好嵌套层数<3,不然复杂度太高;
#输出菱形,行数为奇数,假设为7 row=eval(input('row:')) while row%2==0: print('Wrong!') print('row again') row=eval(input('row:')) top_row=(row+1)//2#上半部分top_row=4,由倒直角三角形和等边三角形构成 for i in range(1,top_row+1):#i=1,j=3;i=2,j=2;i=3,j=1;i=4,j=0; for j in range(1,top_row+1-i):#j:1——3 print(' ',end=' ') for k in range(1,i*2):#等边三角形(1,2)(1,4)(1,6)..... print('*',end=' ') print() down_row=row//2#3 for i in range(1,down_row+1):#空格112233 for j in range(1,i+1): print(' ', end=' ') for k in range(1,down_row*2-i*2+2):#5 3 1 print('*',end=' ') print()
空心菱形的打印大致相同,只是在打印*时要加上一个判断,打印*时第一个位置和最后一个位置打印*,而其它位置打印空格即可,如下:
row=eval(input('row:')) while row%2==0: print('Wrong!') print('row again') row=eval(input('row:')) top_row=(row+1)//2#上半部分top_row=4,由倒直角三角形和等边三角形构成 for i in range(1,top_row+1):#i=1,j=3;i=2,j=2;i=3,j=1;i=4,j=0; for j in range(1,top_row+1-i):#j:1——3 print(' ',end='') for k in range(1,i*2):#等边三角形(1,2)(1,4)(1,6)..... if k==1 or k==i*2-1: print('*',end='') else: print(' ',end='') print() down_row=row//2#3 for i in range(1,down_row+1):#空格112233 for j in range(1,i+1): print(' ', end='') for k in range(1,down_row*2-i*2+2): if k==1 or k==down_row*2-i*2+2-1: print('*',end='') else: print(' ',end='') print()
程序跳转语句
continue就是执行到此处无视后面的代码回到循环体开头开始执行;
这里我们依然用累加求和来举例(1-100偶数累加求和):
空语句
本章总结
习题:
闰年判断
模拟10086:
99乘法表: