Python流程控制

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!

  • 22
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值