python学习记录5

发布于:2024-10-09 ⋅ 阅读:(44) ⋅ 点赞:(0)

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("登入失败")


网站公告

今日签到

点亮在社区的每一天
去签到