python学习记录5
1 描述程序
程序可以用三种方法来描述:自然语言、流程图、伪代码
自然语言:主要使用后IPO描述,即描述输入,描述过程、描述输出。
流程图:使用图形、文字、线条·描述程序
伪代码:介于汇编语言和自然语言中间的一组描述代码的语言
2 程序结构
程序分成三种结构:顺序结构、分支结构、循环结构。
(1)顺序结构
从上而下,一字不落地依次执行每条语句,例如输入输出语句
a = 3
b,c = 4,5
str = '你好'
print(a,b,c,str)
num = input()
print(num[0],num[1],num[2])
(2)分支结构
分支结构是指一个程序拥有许多代码块,系统先判断表达式的情况,根据表达式的值执行对应的代码块,其中if语句是最经典的分支结构,包括单分支的if,双分支的if-else,多分支的if-elif-else
分支语句的判断是顺序的,当第n个语句判断为False时才会判断下面第n+1个语句,否则执行第n个对应的代码块并且结束分支。
if语句中判断的是比较式,输出类型一般是布尔型,判定规则为:值为0则为False,不是0则为True。Python中每一个变量都有布尔值。
#单分支
print("输入你的分数:")
x = eval(input())
if(x>=60):
print('恭喜你!及格了!')
#双分支
print('请输入一个数字')
x = eval(input('你输入的数字是:'))
if(x%2 != 0):
print('你输入的是奇数')
else:
print('你输入的是偶数')
#双分支简化
x = eval(input())
y = "你输入的是奇数" if not x%2 == 0 else "你输入的是偶数"
print(y)
#多分支
print("输入你的身高(米)")
high = eval(input())
print("输入你的身高(公斤)")
weight = eval(input())
BMI = weight/high**2
if(BMI<18.5):
print("过瘦")
elif(18.5<=BMI and BMI<=24):
print("正常")
else:
print("过重")
同时,分支结构是可以嵌套的,即执行分支语句所对应的代码块可以是一个另外一个分支结构
#嵌套分支
print("请从以下选项选一个食材:1:小鸡 2:小猪")
x = eval(input())
print("请从以下选项选一个配菜:a:蘑菇 b:番茄")
y = input()
if(x == 1):
if(y == "a"):
print("今天吃小鸡炖蘑菇")
else:
print("今天吃小鸡炖番茄")
else:
if (y == "a"):
print("今天吃小猪炖蘑菇")
else:
print("今天吃小猪炖番茄")
虽然python中没有switch语句,但是有模式匹配语句match-case。这可以直接根据条件进行匹配
num = eval(input("你引体向上的个数\n"))
if(num>=10):
x = 2
elif(num<10 and num>=5):
x = 1
else:
x = 0
match x:
case 2:
print("牛")
case 1:
print("还行")
case 0:
print("多练")
(3)循环结构
循环结构分为遍历循环for和无限循环while
遍历循环for
所谓遍历循环,就是将for语句中的变量从初始值到终值全部判断一遍,若是变量的值符合语句的条件则执行for下面的语句块,不一致则不执行,将所有值都遍历一遍后才跳出循环,执行完语句之后变量的值默认增加1(不一定是数值上的增加1,也有可能是序号增加什么的)。
for i in n个字符的字符串,将字符串序号从0到n的的每个字符遍历一遍,跳出字符串则终止循环,并且此时变量i无论原先是什么类型的,都会强制转换为字符串类型。
for循环经常与分支结构if嵌套使用。
for循环结构分为for-in和拓展结构for -in-else。for-else中else的语句块是当for循环的变量从初值到终值全部执行一遍时,即for循环未中断时执行的。
for循环还有一个配套函数range,range(i,j)的作用是生成从i到j的左闭右开集合的整数。
#字符串循环
i = 1#int类型
for i in "apple":
print(i,type(i))#强制转换为str类型
#使用range函数
s = 1
for i in range(1,5):#计算4!
s *= i
print(s)
#与if嵌套使用
s = 1
for i in range(1,101):
if i%2!=0 :
print(i,sep = '\t',end = " ") #输出从1到100所有的奇数
#for -else的使用1
for i in range(1,101):
print(i)
else :
print("输出完毕!")
#for -else的使用2:判断你输入的是不是素数
print("请输入一个整数:")
s = eval(input())
x = 2
for i in range(1,int(math.sqrt(s))):
if s%x != 0 and s>1:
x+=1
else:
break
else:
print("你输入的是素数")
if x<=math.sqrt(s):
print("你输入的不是素数")
for循环还可以遍历文件、组合等,这里不多叙述了。
无限循环while
while循环与if类似,通过对条件语句的判定来决定是否执行之后的语句块。
while循环也经常与if嵌套使用。与if不同的是,while会对条件判断多次,因此必须将需要进行判断的变量初始化,并且在语句块中对这个变量进行可以逐渐跳出循环的改变,否则while会一直执行下去。
while进行判断输出的也是布尔值,结果为True则执行语句块,否则不执行。
while与for一样,也有一个拓展while-else。else的执行条件也是作为条件的变量从初值到终值被完整的判断过去。
#while循环
i = 0
while i<10:
i+=1
print(i)
import math
#while+if+for嵌套:输出1-100的所有素数
i = 2
while i<100:
for s in range(2,i):
if i%s == 0 :
break
else:
print(i)
i += 1
#while + else 模拟账号密码登入(只有5次机会)
print("输入你的账号:")
ac = input()
print("请输入你的密码")
pas = input()
s = 1
while s<5:
if ac == "admin" and pas == "123456" :
print("登入成功")
break
else:
print("账号或者密码输入错误,你还有:",5-s,"次机会",sep = "")
print("输入你的账号:")
ac = input()
print("请输入你的密码")
pas = input()
s+=1
else:
print("登入失败")