程序的描述方式
1.自然语言
2.流程图
伪代码
#coding:utf-8
r=eval(input('请输入圆的半径:'))
area=3.14*r*r
perimeter=2*3.14*r
print('圆的面积是:',area,'周长是:',perimeter)
程序的组织结构
1.顺序结构
2.选择结构
a.单分支结构
number=eval(input('请输入您的6位中奖号码:'))
if number==987654: #等值判断
print('恭喜您,中奖了!')
if number!=987654 #不等值判断
print('您未中奖。')
!!使用if语句时,如果语句块中只有一句代码,可以将语句块直接写在冒号的后面
a=10
b=5
if a>b:max=a
print('a和b的最大值为:',max)
b.双分支结构
number=eval(input('请输入您的6位中奖号码:'))
if number==987654:
print('恭喜您,中奖了!')
else
print('您未中奖。')
#以上代码可以使用条件表达式进行简化
reslut='恭喜您,中奖了!'if number==987654 else'您未中奖。'
print(result)
#最简化
print('恭喜您,中奖了!'if number==987654 else'您未中奖。')
c.多分支结构
当表达式结果都为false时,会执行else语句,所以else语句并不是必须的、可以没有
d.嵌套
e.多条件
在使用and连接多个条件判断时,只有同时满足多个条件,才能执行if后面的语句块。
在使用or连接多个条件判断时,只要满足多个条件中的一个,就可以执行if后面的语句块
f. 模式匹配
match...case
模式匹配 是其他语言中switch的加强版。
score=input('请输入成绩等级:')
match score:
case 'A':
print('优秀')
case 'B':
print('良好')
3. 循环结构
a.遍历循环结构for
range()函数
range()函数,产生一个[n,m)的整数序列,包含n,但不包含m。
b.无限循环结构while
answer=input('今天要上课吗? yes/no')#(1)初始化变量
while answer=='yes': #(2)条件判断
print('要上课') #(3)语句块
answer=input('今天要上课吗? yes/no')#(4)改变条件
案例
使用while循环模拟用户登录,且只有三次机会
i=0
while i<3:#执行三次0、1、2
user_name=input('请输入你的用户名:')
pwd=input('请输入你的密码')
if user_name=='xm' and pwd=='88888':
print('系统正在登录中...')
i=8 #改变变量 8<3 Flase退出while循环
else:
if i<2:
print('用户名或密码不正确,您还有',2-i,'次机会')
i+=1 #改变变量
if i==3:
print('三次都错误')
c.嵌套循环
案例
嵌套循环打印星号图形
# 长方形 三行四列
for i in range(1,4):
for j in range(1,5):
print('*',end='')#end结束符为空
print() #换行
————————————————————————————
# 三角
for i in range(1,6):
for j in range(1,i+1):
print('*',end='')
print()
————————————————————————————
#倒三角
for i in range(1,6):
for j in range(1,7-i):
print('*',end='')
print()
————————————————————————————
#等腰三角形
for i in range(1,6):
for j in range(1,6-i):
print(' ',end='')
for k in range(1,i*2):
print('*',end='')
print()
————————————————————————————
#菱形(只有奇数行才能打印出菱形)
row=eval(input('请输入菱形的行数'))
if row%2==0: #判断函数的奇偶性
print('重新输入')
row=eval(input('请输入菱形的行数'))#现在假设为7
#------上半部分
top_row=(row+1)//2 #(7+1)/2
for i in range(1,top_row+1):
for j in range(1,top_row+1-i):
print(' ',end='')
for k in range(1,i*2):
print('*',end='')
print()
#------下半部分
bottom_row=row//2
for i in range(1,bottom_row+1):
for j in range(1,i+1):
print(' ',end='')
for k in range(1,2*bottom_row-2*i+2):
print('*',end='')
print()
————————————————————————————
#空心菱形(只需加一个判断:只有在第一个和最后一个时才打印星号,不然就打印空格)
row=eval(input('请输入菱形的行数'))
if row%2==0:
print('重新输入')
row=eval(input('请输入菱形的行数'))#现在假设为7
#------上半部分
top_row=(row+1)//2 #(7+1)/2
for i in range(1,top_row+1):
for j in range(1,top_row+1-i):
print(' ',end='')
for k in range(1,i*2):
if k==1 or k==i*2-1:
print('*',end='')
else:
print(' ',end='')#空格而不是空字符串
print()
#------下半部分
bottom_row=row//2
for i in range(1,bottom_row+1):
for j in range(1,i+1):
print(' ',end='')
for k in range(1,2*bottom_row-2*i+2):
if k==1 or k==2*bottom_row-2*i+2-1:
print('*',end='')
else:
print(' ',end='')
print()
程序的跳转语句
break
1.break在无限循环while中的使用
s=0
i=1
while i<11:
s+=i
if s>20:
print('累加和大于20的数是:',i)
break
i+=1
2.用break来代替上用户名案例中通过改变变量的方式
i=0
while i<3:#执行三次0、1、2
user_name=input('请输入你的用户名:')
pwd=input('请输入你的密码')
if user_name=='xm' and pwd=='11111':
print('系统正在登录中...')
break
else:
if i<2:
print('输入错误,您还有',2-i,'次机会')
i+=1 # 用户名不正确的时候的改变变量
else:
print('三次都错误')
3.break在遍历循环for中的使用
continue
i=1
while i<=100:
if i%2==1: #奇数
i+=1
continue#不再执行后面的代码
s+=i
i+=1
print('1-100之间的偶数和为:',s)
空语句pass
实战
九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print(str(j)+'*'+str(i)+'='+str(i*j),end='\t')
print()
猜随机数
random()函数
产生随机数的代码如下:
import random
rand=random.randint(1,100)#包含1也包含100
#产生随机数
import random
rand=random.randint(1,100)#包含1也包含100
count=1 #记录猜数次数,循环初始化
while count<=10:
number=eval(input('有一个数,在1~100,请你猜一猜:'))
if number==rand:
print('猜对了')
break
elif number>rand:
print('大了')
elif number<rand:
print('小了')
count+=1
if count<=3:
print('恭喜,你一共猜了',count,'次')
elif count<=6:
print('还可以,你一共猜了',count,'次')
else:
print('继续努力,你一共猜了',count,'次')