本文已参与「新人创作礼」活动,一起开启掘金创作之路。
🌴 2022.3.23 下午
🎬本文章是 【Python语言基础】 专栏的文章,主要是上课的随堂笔记与练习
🔗Python专栏 传送门
💻提示:本文的环境配置是Python3的开发环境。目录顺序以当堂内容(教材)为准,所以并非“1、2、3”
📽本节主要内容:顺序结构、选择结构、循环结构
3 程序设计结构
3.1 概述
python与C++,java一样,按照设计方法的不同,计算机程序设计也有面向对象程序设计和面向过程程序设计
首先样子先来学习
if...else...,while...结构化程序有三种基本结构:顺序结构、选择结构和循环结构
- 顺序结构: 程序由上到下依次执行每条语句
- 选择结构: 程序判断某个条件是否成立,决定执行哪部分代码
- 循环结构: 程序判断某个条件是否成立,决定是否重复执行某部分代码
3.2 顺序结构
在程序的顺序结构中,依次执行程序代码的各条语句
a = 5
b = 6
c = a + b
print("c =",c) #c=11
3.3 选择结构
🚀 3.3.1 单分支结构
单分支结构可用if单分支语句实现,其一般格式为:
if 表达式: 语句块
语句的执行过程是:如果表达式的值为True,则执行语句中的语句块;否则,直接执行if语句的后续语句
- if语句中的语句块可以包含单个语句或多个语句
- 如果语句块中只有一条语句,可以写在同一行中
判断从键盘输入整数的奇偶性并输出结果
n = int(input("请输入一个整数: "))
flag = str(n) + " 是偶数!"
if n % 2 != 0:
flag = str(n) + " 是奇数!"
print(flag)
'''
请输入一个整数: 3
3 是奇数!
'''
从键盘输入两个整数,然后按照从大到小的顺序输出这两个数
x = int(input("请输入一个整数: "))
y = int(input("请输入一个整数: "))
if x < y:
x,y = y,x
print("%d, %d"%(x,y))
'''
请输入一个整数: 382
请输入一个整数: 401
401, 382
'''
🚀 3.3.2 二分支结构
二分支结构可用if二分支语句实现,其一般格式为:
if 表达式: 语句块1 else: 语句块2语句执行过程是:如果表达式的值为True时,则执行语句块1;否则,执行语句块2
求两个数中较大的数并输出
a = 5
b = 6
if a > b:
max = a
else:
max = b
print("max =",max)
'''
max = 6
'''
根据输入的x,求分段函数y的值
from math import exp,log
x = float(input("请输入x的值: "))
if x < 2.0:
y = 2 * exp(x-1)
else:
y = log(x ** 2 - 1,3)
print("y =%9.6f."%y)
'''
请输入x的值: 1.5
y = 3.297443.
运行结果2:
请输入x的值: 3.0
y = 1.892789.
'''
🚀 3.3.3 多分支结构
多分支结构可用
if多分支语句实现,其一般格式为(注意python中的elseif没有空格):if 表达式1: 语句块1 elif表达式2: 语句块2 … [else: 语句块n+1]
使用if多分支语句判别键盘输入成绩等级并输出
score = int(input("请输入成绩: "))
if score >= 90:
print("成绩等级: 优秀!")
elif score >= 80:
print("成绩等级: 良好!")
elif score >= 60:
print("成绩等级: 合格!")
else:
print("成绩等级: 不合格!")
使用if多分支语句实现简单的算术运算
x, op, y = input("请输入操作数和操作符: ").split()
if op == "+":
z = float(x) + float(y)
print("运行结果:", x, op, y, "=", z)
elif op == "-":
z = float(x) - float(y)
print("运行结果:", x, op, y, "=", z)
elif op == "*":
z = float(x) * float(y)
print("运行结果:", x, op, y, "=", z)
elif op == "/":
z = float(x) / float(y)
print("运行结果:", x, op, y, "=", z)
else:
print("您输入的运算符不支持!请重新输入!")
"""
请输入操作数和操作符: 38.0 + 107.0
38.0 + 107.0 = 145.0
"""
🚀 3.3.4 条件运算
条件运算相当于一个二分支结构语句的功能,包含三个表达式,其一般格式为:
表达式1 if 表达式 else 表达式2条件运算的执行过程是:如果if后面的表达式值为True,则以表达式1的值为条件运算的结果;否则,以表达式2的值为条件运算的结果
判断从键盘输入的学生成绩是否合格
score = int(input("请输入学生成绩: "))
flag = "合格" if score >= 60 else "未合格"
print("成绩结果:",flag)
'''
运行结果1:
请输入学生成绩: 96
成绩结果: 合格
运行结果2:
请输入学生成绩: 38
成绩结果: 未合格
'''
🚀 3.3.5 选择结构嵌套
求三个数中最大的数并输出
a = 3;
b = 2;
c = 4;
if a > b:
if a > c:
print("最大的数是:", a)
else:
print("最大的数是:", c)
else:
if b > c:
print("最大的数是:", b)
else:
print("最大的数是:", c)
'''
4
'''
3.4 循环结构
🚀 3.4.1 while语句
while 语句用于循环执行一段程序,一般来说使用在循环次数不确定! while语句的一般格式为:
while 表达式: 语句块 [else: else子句语句块]
使用while语句计算1~100的和
n = 100 #终止值.
sum = 0 #保存结果.
i = 1 #循环变量.
while i <= n:
sum = sum + i
i += 1
print("1 到 %d 之和为: %d." % (n,sum))
'''
1到100之和为: 5050.
'''
使用while-else语句求
mul = 1; i = 1; sum = 0
while i <= 10:
mul = mul * i #计算阶乘.
sum = sum + mul #计算和.
i = i + 1
else:
print("循环结束!") #结束循环提示.
print("sum =",sum)
'''
循环结束!
sum = 4037913
'''
🚁 while语句块中的input()函数
通过键盘动态录入学生的英语成绩,输入-1退出录入成绩,并计算录入学生英语成绩的人数、总分和平均分
total = 0;
ave = 0;
count = 0
score = int(input("请输入学生英语成绩:"))
while score != -1:
total = total + score
count = count + 1
score = int(input("请输入学生英语成绩:"))
ave = total / count
print("录入学生英语成绩 %d 份, 学生英语总成绩 %d, 平均成绩 %4.2f." % (count, total, ave))
'''
请输入学生英语成绩:98
请输入学生英语成绩:85
请输入学生英语成绩:86
请输入学生英语成绩:-1
录入学生英语成绩 3 份, 学生英语总成绩 269, 平均成绩 89.67.
'''
完善,因为分数不能是负数或者无限大,在逻辑上是不对的
total = 0;
ave = 0;
score=0
person = int(input("请输入班级人数"))
i=0
while i<person:
score = int(input("请输入学生英语成绩:"))
flag=0
while flag==0:
if score>100 or score<0:
score = int(input("输入有误,请重新输入"))
else:
flag=1
total = total + score
i=i+1
ave = total / person
print("录入学生英语成绩 %d 份, 学生英语总成绩 %d, 平均成绩 %4.2f." % (person, total, ave))
🌴 2022.3.30 下午
🚀 3.4.2 for语句
在Python中,for语句更适合循环访问系列或迭代对象(如字符串、列表、元组、字典等)中的元素,常用在循环次数确定的循环体种,其一般格式为
for 变量 in 序列或迭代对象: 语句块 [else: else子句语句块]
使用for语句遍历列表中的元素
for letter in 'Python':
print(letter, end=' ')
print()
chemists = ['道尔顿', '门捷列夫', '拉瓦锡', '诺贝尔'] #世界著名化学家.
print("化学家:",end=' ')
for hxj in chemists:
print(hxj, end=' ')
'''
P y t h o n
化学家: 道尔顿 门捷列夫 拉瓦锡 诺贝尔
'''
使用for-else语句遍历元组中的元素并在结束后给出提示信息
mathematicians = ('阿基米德','牛顿','高斯','庞加莱')
print("数学家:",end=' ')
for sxj in mathematicians:
print(sxj, end=' ')
else:
print("\n提示: 元组遍历完毕!")
'''
数学家: 阿基米德 牛顿 高斯 庞加莱
提示: 元组遍历完毕!
'''
🚁 for语句中的range()函数
在for语句中使用range()函数控制循环次数(range是0~2)
universities = ["哈佛大学","斯坦福大学","剑桥大学","麻省理工学院","加州大学-伯
克利","普林 斯顿大学","牛津大学","哥伦比亚大学","加州理工学院","芝加哥大学"]
print("2017《Times》世界大学排名前3的大学是:")
for i in range(3):
print(str(i+1)+".",universities[i])
'''
2017《Times》世界大学排名前3的大学是:
1. 哈佛大学
2. 斯坦福大学
3. 剑桥大学
'''
求1~20范围内能被3整除的所有数的和
# 通过设置range()函数的步长为3实现。
sum = 0
for i in range(0,21,3):
sum = sum + i
print('sum =',sum)
'''
sum = 63
'''
# 通过判断该数除以3的余数是否为0实现。
sum = 0
for i in range(1,21):
if i % 3 == 0:
sum = sum + i
print('sum =',sum)
'''
sum = 63
'''
🚀 3.4.3 break语句、continue语句和pass语句
- break语句: 退出循环
- continue语句: 跳过该次循环
- pass: 空语句(不做任何处理)
通过上述3种语句,可以控制循环的执行和保持程序结构的完整
输出斐波那契数列前10项,斐波那契公式:F(i)=F(i-1)+F(i-2),F(1)=F(2)=1
n1 = 1 #第1项
n2 = 1 #第2项
count = 2
print("斐波那契数列前10项为:",end=" ")
print(n1,n2,end=" ") #输出前2项.
while True:
if count >= 10: #如果已经输出前10项.
break #跳出循环
nth = n1 + n2 #计算下一项.
print(nth,end=" ") #输出第count+1项.
n1 = n2
n2 = nth
count += 1
'''
斐波那契数列前10项为:1 1 2 3 5 8 13 21 34 55
'''
求1~10范围内所有偶数的和
i = 1; n = 10; sum = 0
while i <= n:
if i % 2 == 1: #i为奇数,跳过.
i = i + 1
continue #使用continue跳出本次循环.
sum = sum + i
i = i + 1
print("sum =",sum)
'''
sum = 30
'''
验证客户的股票抽签号是否中签。中签的股票抽签号以88开头且8位
stockNum = input("请输入您的股票抽签号:")
if stockNum.startswith("88") and stockNum.__len__() == 8:
print("恭喜您,中签了!")
else:
pass #pass空语句, 不做任何处理.
'''
请输入您的8位股票抽签号:88613042
恭喜您,中签了!
'''
🚀 3.4.4 循环结构嵌套
输出元素为"*"、5行5列的左下角直角三角形
for i in range(1,6): #外循环次数: 5.
for j in range(i): #内循环次数: 5.
print("*",end=' ') #输出 "*".
print() #换行.
'''
*
* *
* * *
* * * *
* * * * *
'''
输出对角线元素为1的4行4列矩阵
for i in range(1,5): #行数为4
for j in range(1,5): #列数为4
if i == j or i + j == 5:
print("1",end=' ') #输出1
else:
print("0",end=' ') #输出0
print() #换行
'''
1 0 0 1
0 1 1 0
0 1 1 0
1 0 0 1
'''