1 实验介绍
1.1 关于本实验
本实验主要介绍三种基本结构:
(1)顺序结构是程序按照代码出现的先后次序执行。
(2)选择结构是用来实现逻辑判断功能的重要手段。
(3)循环结构是指程序有规律地反复执行某一操作块的现象,介绍了Python语言的while循环和for循环,while循环常用于多次重复运算,而for循环用于遍历序列型数据,最后,介绍了break、continue和pass等辅助语句。
1.2 实验目的
掌握程序的三种基本结构;掌握顺序结构程序设计;熟练掌握Python语言中输入输出格式的规则和用法。熟练掌握if语句的三种形式和用法以及if语句的嵌套使用;掌握分支结构的应用。熟练掌握循环结构while、for语句的规则和用法;熟悉continue、break、pass语句的用法;掌握循环结构的嵌套规则。
2 顺序结构
顺序结构是最简单的控制结构,按照语句书写先后次序依次执行。顺序结构的语句主要是赋值语句、输入与输出语句等,其特点是程序没着一个方向进行,具有唯一的入口和出口。只有先执行语句1,才会执行语句2,语句1将输入数值进行处理后,其输出结果作为语句2的输入。也就是说,如果没有执行语句1,语句2就不会执行。
【任务1】从键盘输入一个3位整数,分离出它的个位、十位和百位,在屏幕输出。
x=int(input("请输入一个3位整数:"))
a=x//100
b=(x-a*100)//10
c=x%10
print("百位=%d,十位=%d,个位=%d"%(a,b,c))
程序运行结果如下:
请输入一个3位整数: 236
百位=2,十位=3,个位=6
3 选择结构
选择结构又称为分支语句、条件判定结构,Python根据条件表达式的执行结果(True或者False),选择特定不同的语句执行。Python通过if语句来实现分支语句。if语句具有单分支、双分支和多分支等形式。
3.1单分支
if的单分支语句说明
if条件表达式:
语句块
Python认为非0的值为True,0为False。
【任务1】从键盘上输入两个正整数x和y,升序输出。
x=int(input("please input x"))
y=int(input("please input y"))
if x>y: #如果x大于y条件成立,则引入t交换x和y
X,Y=Y,X
print("after sorting", x, y)
程序运行结果如下:
please input x 5
please input y 6
after sorting 5 6
3.2 双分支
if语句的双分支当条件表达式的值为True时,程序执行语句1;当条件表达式的值为False时,程序执行语句2。
If的双分支语句书写格式如下。
if条件表达式:
<语句块1>
else:
<语句块2>
【任务2】判断5位数是不是回文数。
分解出万位、千位、十位和个位,进行首尾判断是否相等。
x=int(input('请输入x:'))
wan=x//10000;
qian=x%10000//1000;
shi=x%100//10;
ge=x%10;
if ge==wan and shi==qian:
print("It is palindromic number!\n")
else:
print("It is not palindromic number!\n")
程序运行结果如下:
请输入x: 56123
It is not palindromic number!
3.3 多分支
多分支语句根据不同的条件执行不同的语句块,If的多分语句格式如下。
if条件表达式1:
<语句块1>
elif条件表达式2:
<语句块2>
…
else:
<语句块m>
【任务3】根据当前时间是上午、下午还是晚上,分别给出不同的问候信息。
hour=int(input("hour"))
if hour <= 12 :
print("Good morning")
elif hour < 18:
print("Good afternoon")
else:
print("Good Evening")
程序运行结果如下:
hour 19
Good Evening
【任务4】百分制转化为五级制。输入学生的成绩,根据成绩进行分类,90分以上为优秀,80分89分为良好,70分79分为中等,60分~69分为及格,60分以下为不及格。
score=int(input('请输入学生成绩:'))
if score<60:
print('不及格')
elif score<70:
print('及格')
elif score<80:
print('中等')
elif score<90:
print('良好')
else:
print('优秀')
程序运行结果如下:
请输入学生成绩: 30
不及格
3.4分支嵌套
【任务5】从键盘上输入一整数,判断其是否能被2或者3整除。
num=int(input("enter number"))
if num%2==0:
if num%3==0:
print("Divisible by 3 and 2")
else:
print("divisible by 2 not divisible by 3")
else:
if num%3==0:
print("divisible by 3 not divisible by 2")
else:
print("not Divisible by 2 not divisible by 3")
程序运行结果如下:
enter number 11
not Divisible by 2 not divisible by 3
4 循环结构
4.1 while语句
只要条件满足,循环执行某段程序,直到条件不满足时退出循环。
【任务6】 计算1~100之间所有整数之和。
N=100
counter=1 #表达式1,counter为循环变量
sum=0 #sum表示累加的和
while counter <= N: #表达式2,counter的变化范围从1到100
sum = sum + counter #部分和累加
counter +=1 # 表达式3,counter的步长为1
print("1 到 %d 之和为: %d" % (N,sum))
程序运行结果如下:
1 到 100 之和为: 5050
4.2 else语句
while…else语法是Python中最不常用,最易被误解的语法,书写格式如下:
while循环控制条件:
循环体
else:
语句
当while结构中存在可选部分else,其循环体执行结束后,会执行else语句块。
【任务7】while…else语句。
count = int(input())
while count < 5:
print(count,"is less than 5")
count =count+1
else:
print(count,"is not less than 5")
程序运行结果如下:
6
6 is not less than 5
4.3 无限循环
无限循环又称死循环,当“条件表达式”永远为真时,循环永远执行,语法如下:
while true:
循环体
【任务8】求2+3+6+8+……+n<100成立的最大的n值
i = 2; sum = 0
while True:
sum+= i
if sum>=100:
break
else:
i+= 2
print("the max number is ",i)
程序运行结果如下:
the max number is 20
4.4 for语句
应用序列类型
for循环语句依次访问序列(列表、元组、字符串)中的全体元素,语法格式如下:
for in
else:
【任务9】for循环应用于列表序列
fruits = ['banana', 'apple', 'mango'] #列表
for fruit in fruits:
print('fruits have :', fruit)
程序运行结果如下:
fruits have : banana
fruits have : apple
fruits have : mango
注意:Python的for循环与C语言的for循环不同,是在for语句开始确定循环的次数,在循环体中对于序列对象做任何的改变,并不影响循环体执行的次数。
【任务10】汉字表示的大写数字金额
输入整数金额,输出汉字表示的大写金额。金额数为正整数,最大为12位数字。
输入格式:
输入一个正整数,表示金额,最大位数为12。
输出格式:
输出的时候,从第一位数字开始,后面所有的位数都需要输出,包括0(零)。
n=list(map(int,input()))
m={1:"壹",2:"贰",3:"叁",4:"肆",5:"伍",6:"陆",7:"柒",8:"捌",9:"玖",0:"零"}
r=["仟","佰","拾","亿","仟","佰","拾","万","仟","佰","拾","圆"]
d=-len(n)
for i in n:
print(m[i],r[d],sep="",end='')
d=d+1
程序运行结果如下:
123456789
壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖圆
4.5 循环嵌套
【任务11】 打印九九乘法表。
九九乘法表涉及乘数i和被乘数j两个变量,变化范围为1~9。
步骤1:先假设被乘数j的值不变,假设为1,实现单重循环。
for i in range(1,10):
j =1
print(i,"*",j,"=",i*j,"",end=" ")
程序运行结果如下:
1 * 1 = 1 2 * 1 = 2 3 * 1 = 3 4 * 1 = 4 5 * 1 = 5 6 * 1 = 6 7 * 1 = 7 8 * 1 = 8 9 * 1 = 9
步骤2:将被乘数j的定值1改为变量,让其从1到9取值。
for i in range(1,10):
for j in range(1,10):
print('{0}*{1}={2:2}'.format(i,j ,i * j),end=" ") #格式化输出
print()
程序运行结果如下:
1*1= 1 1*2= 2 1*3= 3 1*4= 4 1*5= 5 1*6= 6 1*7= 7 1*8= 8 1*9= 9
2*1= 2 2*2= 4 2*3= 6 2*4= 8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18
3*1= 3 3*2= 6 3*3= 9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27
4*1= 4 4*2= 8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36
5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45
6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=54
7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63
8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72
9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
4.6 辅助语句
当需要在循环体中提前跳出循环,或者在某种条件满足时,不执行循环体中的某些语句而立即从头开始新的一轮循环,这时就要用到循环控制语句break、continue和pass。
4.6.1 break语句
break语句可以提前退出循环。break语句对循环控制的影响说明:
(1)break语句只能出现在循环语句的循环体中
(2)在循环语句嵌套使用的情况下,break语句只能跳出它所在的循环,而不能同时跳出多层循环。
【任务12】 用for 语句判断从键盘上输入的整数是否为素数。
import time
print("输入一整数,输出小于该整数的所有素数")
n = int(input())
start = time.perf_counter()
isPrime = []
prime = []
for i in range(0,n):
isPrime.append(True)
isPrime[0]=isPrime[1]=False
for i in range(2,n):
if isPrime[i]:
prime.append(i)
for j in range(2*i,n,i):
isPrime[j]=False
end = time.perf_counter()
print(prime)
print("质数筛0-{}质数运行时间".format(n),end - start,"s")
程序运行结果如下:
输入一整数,输出小于该整数的所有素数
20
[2, 3, 5, 7, 11, 13, 17, 19]
质数筛0-20质数运行时间 0.00040423999962513335 s
4.6.2 continue语句
在循环过程中,也可以通过continue语句跳过当前这次循环,直接开始下一次循环,即只结束本次循环的执行,并不终止整个循环的执行。
说明:
(1)continue语句只能出现循环语句的循环体中。
(2)continue语句往往与if语句联用。
(3)若执行while语句中的continue语句,则跳过循环体中continue语句后面的语句,直接转去判别下次循环控制条件;若continue语句出现在for语句中,则执行continue语句就是跳过循环体中continue语句后面的语句,转而执行for语句的表达式3。
【任务13】 continue语句实例
for i in range(6):
if i % 2 != 0:
print(i,end='')
continue
print('*')
程序运行结果如下:
1*
3*
5
4.6.3 pass语句
当某个子句无须任何操作,可使用pass语句保持程序结构的完整性。
【任务14】pass 语句实例
for letter in 'Python':
if letter == 'h':
pass
print('This is pass block')
print('Current Letter :', letter)
print("Good bye!")
程序运行结果如下:
Current Letter : P
Current Letter : y
Current Letter : t
This is pass block
Current Letter : h
Current Letter : o
Current Letter : n
Good bye!