Python随堂笔记 顺序结构 选择结构 循环结构

404 阅读8分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

🌴 2022.3.23 下午

🎬本文章是 【Python语言基础】 专栏的文章,主要是上课的随堂笔记与练习
🔗Python专栏 传送门
💻提示:本文的环境配置是Python3的开发环境。目录顺序以当堂内容(教材)为准,所以并非“1、2、3”
📽本节主要内容:顺序结构、选择结构、循环结构

3 程序设计结构

3.1 概述

python与C++,java一样,按照设计方法的不同,计算机程序设计也有面向对象程序设计和面向过程程序设计

首先样子先来学习if...else...,while...结构化程序有三种基本结构:顺序结构、选择结构和循环结构

  • 顺序结构: 程序由上到下依次执行每条语句
  • 选择结构: 程序判断某个条件是否成立,决定执行哪部分代码
  • 循环结构: 程序判断某个条件是否成立,决定是否重复执行某部分代码

3.2 顺序结构

在程序的顺序结构中,依次执行程序代码的各条语句

Python语言基础07
a = 5
b = 6
c = a + b
print("c =",c) #c=11

3.3 选择结构

🚀 3.3.1 单分支结构

Python语言基础08

单分支结构可用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 二分支结构

Python语言基础09

二分支结构可用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的值

{ex1x<2log2(x21)x2\begin{cases} e^{x-1} &x<2\\ log_2(x^2-1)&x≥2\\ \end{cases}
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 多分支结构

Python语言基础10

多分支结构可用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语句

Python语言基础11

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语句求10i=1i!\sum_{10}^{i=1} i!

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子句语句块]
Python语言基础12

使用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 
'''