1、程序的描述方式
(1)自然语言:就是使用人类语言、直接描述程序
(2)流程图:用一系列图形、流程线和文字说明描述程序的基本操作和控制流程,主要适用于较短的算法
(3)伪代码:是介于自然语言与编程语言之间的一种算法描述语言,如果程序比较小,可以直接使用代码描述
2、程序的组织结构
顺序结构、选择结构(分支结构)、循环结构
3、顺序结构
按程序语句的自然顺序,从上到下、依次执行每条语句的程序
# 赋值运算符的顺序 从右到左
name='张三'
age=20
a=b=c=d=100 # 链式赋值
a,b,c,d='room' # 字符串分解赋值
print(a)
print(b)
print(c)
print(d)
print('----------输入/输出语句也是典型的顺序结构---------')
name=input('请输入您的姓名')
age=eval(input('请输入您的年龄'))
luck_number=eval(input('请输入您的幸运数字'))
print('姓名:',name)
print('年龄:',age)
print('幸运数字:',luck_number)
3、选择结构
选择结构也称分支结构,是按照条件选择执行不同的代码段
(1)单分支结构
number=eval(input('请输入您的6位中奖号码:'))
# 使用if语句
if number==987654: # 等值判断
print('恭喜您,中奖了!')
if number!=987654:
print('您未中本期大奖')
print('------以上if判断的表达式,是通过比较运算符计算出来的,结果是布尔值类型------')
n=98 # 赋值操作
if n%2: # 98%2的余数是0,0的布尔值是False,非0的布尔值是True
print(n,'是奇数') # 由于98%2的余数是0,所以该行代码不执行
if not n%2: # 98%2的余数是0,0的布尔值是False,not False的布尔值是True
print(n,'是偶数')
print('-------判断一个字符串是否是空字符串--------')
x=input('请输入一个字符串:')
if x: #python中一切皆对象,每个对象都有一个布尔值,非空字符串的布尔值为True,空字符串的布尔值为False
print('x是一个非空字符串')
if not x: # 空字符串的布尔值为False,取反,not False的结果是True
print('x是一个空字符串')
print('------表达式也可以是一个单纯的布尔型变量------')
flag=eval(input('请输入一个布尔类型的值:True或False'))
if flag:
print('flag的值为True')
if not flag:
print('flag的值为False')
print('------使用if语句时,如果语句中只有一句代码,可以将语句块直接写在冒号的后面------')
a=10
b=5
if a>b:max=a # 语句块只有一句,赋最大值
print('a和b的最大值为:',max)
(2)双分支结构
number=eval(input('请输入您的6位中奖号码:'))
# if...else
if number==987654:
print('恭喜您中奖了!')
else:
print('您未中本期大奖')
print('------以上代码可以使用条件表达式进行简化------')
result='恭喜您中奖了!' if number==987654 else '您未中本期大奖!'
print(result)
print('恭喜您中奖了!' if number==987654 else '您未中本期大奖!')
(3)多分支结构
score=eval(input('请输入您的成绩:'))
# 多分支结构
if score<0 or score>100:
print('您输入的成绩有误')
if 90<score<=100:
print('A')
elif 80<score<=90:
print('B')
elif 70<score<=80:
print('C')
elif 60<score<=70:
print('D')
else:
print('E')
(4)嵌套if的使用
单分支结构、双分支结构、多分支结构在实际开发过程中是可以互相嵌套使用的,内层的分支结构将作为外层分支结构的语句块使用
answer=input('请问您喝酒了吗?')
if answer=='y': # answer的值为y表示喝酒了
proot=eval(input('请输入您的酒驾含量:'))
if proot<20:
print('构不成酒驾,祝您一路平安!')
elif proot<80:
print('已构成酒驾,请不要开车')
else:
print('已达到醉驾标准,请千万不要开车')
else:
print('您走吧!')
(5)在使用and连接多个条件判断时,只有同时满足多个条件,才能执行if后面的语句块
user_name=input('请输入您的用户名:')
pwd=input('请输入您的密码:')
if user_name=='wsx' and pwd=='888888':
print('登录成功')
else:
print('用户名或密码不正确')
(6)在使用or连接多个条件判断时,只要满足多个条件中的一个,就能执行if后面的语句块
score=eval(input('请输入您的成绩:'))
if score<0 or score>100:
print('您输入的成绩有误,请重新输入')
else:
print('您的成绩为:',score)
(7)新特性-模式匹配match…case…结构
score=input('请输入您的成绩等级:')
match score:
case 'A':
print('优秀')
case 'B':
print('良好')
case 'C':
print('中等')
case 'D':
print('及格')
case 'E':
print('不及格')
4、循环结构
在Python循环结构分两类,一类是遍历循环结构for,一类是无限循环结构while
(1)遍历循环结构for
for i in 'hello':
print(i)
# range()函数,Python中的内置函数,产生一个[n,m)的整数序列,包含n,但是不包含m
for i in range(1,19):
if i%2==0:
print(i,'是偶数')
# 计算1-10之间的累加和
s=0 # 用于存储累加和
for i in range(i,11):
s+=i # 相当于 s=s+i
print('1-10之间的累加和为:',s)
print('----------100到999之间的水仙花数---')
'''
153=3*3*3+5*5*5+1*1*1
'''
for i in range(1,1000):
sd=i%10 # 获取个位上的数字
tens=i//10%10 # 获取十位上的数字
hundred=i//100 # 获取百位上的数字
if i==sd**3+tens**3+hundred**3:
print(i)
遍历循环的扩展形式
s=0
for i in range(1,11):
s+=i
else:
print(s)
(2)无限循环结构while
# (1)初始化变量
answer=input('今天要上课吗?y/n')
while answer=='y': #(2)条件判断
print('好好学习,天天向上') # (3)语句块
# (4)改变变量
answer=input('今天要上课吗?y/n')
# 1-100之间的累加和
s=0 # 存储累加和
i=1 # (1)初始化变量
while i<=100: #(2)条件判断
# (3)语句块
s+=i
# (4)改变变量
i+=1
print('1-100之间的累加和:',s)
无限循环的扩展形式
# 1-100之间的累加和
s=0 # 存储累加和
i=1 # (1)初始化变量
while i<=100:
s+=i # (3)语句块
# (4)改变变量
i+=1
else:
print('1-100之间的累加和:',s)
例1:使用无限循环模拟用户登陆
# (1)初始化变量
i=0
while i<3: #判断条件
#(3)语句块
name=input('请输入您的用户名:')
pwd=input('请输入您的密码:')
if name=='qwer' and pwd=='1234':
print('登录chengg')
i=8 #(4)改变变量
else:
if i<2:
print('用户名或密码不正确,您还有',2-i,'次机会')
i+=1 #相当于i=i+1 # (4)改变变量
# 单分支的判断
if i==3: # 当用户名或密码输入三次不正确的时候,循环执行结束了,i的最大值为3
print('对不起,三次均输入错误')
例2:打印长方形和直角三角形
# 打印一个三行四列的长方形
for i in range(1,4):
for j in range(1,5):
print('*',end='')
print() # 空的print语句,作用是换行
# 打印一个5x5的直角三角形
for i in range(1,6):
for j in range(1,i+1):
print('*',end='')
print() # 空的print语句,作用是换行
例3:打印倒三角形和等腰三角形
# 打印一个5x5的倒直角三角形
for i in range(1,6):
for j in range(1,7-i):
print('*',end='')
print() # 内层循环执行完毕之后,空print()换行
# 打印一个5行的等腰三角形
for i in range(1,6):
for j in range(1,6-i):
print(end='')
for
5、程序跳转语句
(1)break:用于跳(退)出循环,通常与if一起搭配使用
例:跳转语句break在while循环中的使用
s=0 # 存储累加和
i=1 #(1)初始化变量
while i<11: #(2)条件判断
# (3)语句块
s+=i
if s>20:
print('累加和大于20的当前数是:',i)
break
i+=1 # (4)改变变量
print('--------------------------')
i=0 # 统计登录的次数 (1)初始化变量
while i<3: #(2)条件判断
# (3)语句块
user_name=input('请输入用户名:')
pwd=input('请输入密码:')
if user_name=='ysj' and pwd=='888888':
print('系统正在登录,请稍后...')
break
else:
if i<2:
print('用户名或密码不正确,您还有',2-i,'次机会')
# (4)改变变量
i+=1
else: # while...else
print('三次均输入错误!')
例:跳转语句break在for循环中的使用
for i in 'hello':
if i=='e':
break
print(i)
print('------------------------')
for i in range(3):
# (3)语句块
user_name = input('请输入用户名:')
pwd = input('请输入密码:')
if user_name == 'ysj' and pwd == '888888':
print('系统正在登录,请稍后...')
break
else:
if i < 2:
print('用户名或密码不正确,您还有', 2 - i, '次机会')
else: # for...else
print('三次均输入错误!')
(2)continue:用于跳过本次循环的后续代码,而继续执行下一次循环操作
例:跳转语句continue在while中的使用
s=0
i=1 #(1)初始化变量
while i <=100: #(2)条件判断
# (3)语句块
if i%2==1: # 奇数
i+=1
continue # 不再执行后面的代码了
# 累加求和的代码
s+=i
i+=1
print('1-100之间的偶数和:',s)
例:跳转语句continue在for中的使用
s=0
for i in range(1,101):
if i%2==1:
continue
# 累加求和的代码
s+=i
print('1-100之间的偶数和是:',s)
6、pass
pass是Python中的保留字,在语法结构中只起到占位符作用,使语法结构完整,不报错,一般可用在if、for、while、函数的定义、类的定义中
例:空语句pass
if True:
pass
while True:
pass
for i in range(10):
pass