实验三:程序流程控制

一、实验目的


(1)通过本次实验,学生应掌握多分支语句 if …elif…else结构的用法; 
(2)掌握循环语句for、while结构的用法以及跳转语句continue、break的应用;
(3)能应用print()函数和字符串的format方法控制输出内容的格式;
(4)按照实验题目要求独立正确地完成实验内容(编写、调试算法程序,提交程序清单及及相关实验数据与运行结果)

二、实验内容

请使用 Python 语言在 PyCharm 环境下编程,完成下列题目的要求。

1、请编写一个成绩转换程序。每次输入一个百分制的学生成绩,成绩大于或等于90且小于或等于100的输出为“A”,成绩大于或等于80且小于90的输出为“B”,成绩大于或等于70且小于80的输出为“C”,成绩大于或等于60且小于70的输出为“D”,成绩小于60的输出为“E”。如果输入数据不合法(大于100或者小于0)时输出“data error!”。允许重复输入成绩进行转换,直接输入回车时结束程序‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬。‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬

2、编写程序,要求从键盘输入一个10以内的正整数n,计算并输出的结果。当输入的内容不符合要求时,提示用户重新输入,直到符合要求为止。

3、在玩数7游戏中,要求凡是数到7、7的倍数、以及带7的正整数时一律(例如7、14、27都要跳过)不允许说出来,请按这种规则输出100以内允许说出来的那些正整数,要求每行最多输出10个。

4、打印如下图所示星号图形(两个分开实现):

     

三、实验(训)结果

(一)实验代码:

1、

while True:
    score = input("请输入成绩:")
    if score=="":    #输入时直接回车会结束
        print("程序结束")
        break
    else:            #输入不是直接回车时,需要把输入的数字字符串转换成数值
        score=int(score)
        
    if 90<=score<=100:
        print("A")
    elif 80<=score<90:
        print("B")
    elif 70<=score<80:
        print("C")
    elif 60<=score<70:
        print("D")
    elif 0<=score<60:
        print("E")
    else:
        print("Data Error!")

2、(1)单层循环

while True:
    n=int(input("请输入一个正整数n(0<n<10):"))
    if 0<n<10:
        break
    else:
        print("输入不符合要求,请重新输入")
sum=0
item=1   #item用于保存各项的阶乘,初始化时1!=1
 
for i in range(1,n+1):
    item*=i   #当前项的阶乘=前项的阶乘*i
    sum+=item    
    print("{}!={}".format(i,item))
 
print("前{}个正整数的阶乘之和={}".format(n,sum))

 2、(2)多层循环

while True:
    n=int(input("请输入一个正整数n(0<n<10):"))
    if 0<n<10:
        break
    else:
        print("输入不符合要求,请重新输入")
sum=0
for i in range(1,n+1):         #外层循环求阶乘的和
    item=1
    for j in range(1,i+1):     #内层循环求阶乘
        item*=j
    sum+=item
    print("{}!={}".format(i,item))
 
print("前{}个正整数的阶乘之和={}".format(n,sum))  

3、(1)使用求余数(%)和求商运算(//)表达判断条件

num=0  #num用于控制每行输出的数字个数,num等于10的倍数就需要换行显示
for i in range (1,101):
    #下面语句中i%7==0表示能整除7的数,i%10==7表示个位是7的数,i//10==7表示十位是7的数    
    if i%7==0 or i%10==7 or i//10==7:  
        continue
    else:
        print(i,end=" ")
        num+=1
        if num%10==0:
            print()
print("满足要求的数字共有{}个".format(num))

3、(2)使用求余数(%)和字符串类型转换以及成员运算(in)表达判断条件

num=0  #num用于控制每行输出的数字个数,num等于10的倍数就需要换行显示
for i in range (1,101):
    #下面语句中i%7==0表示能整除7的数, "7" in str(i)判断字符"7"是否包含在数值i转换产生的字符串中   
    if i%7==0 or "7" in str(i):  
        continue
    else:
        print(i,end=" ")
        num+=1
        if num%10==0:
            print()
print("满足要求的数字共有{}个".format(num))

4、利用居中对齐进行显示

#显示菱形,使用字符串的format方法进行居中
for i in range(0,4):
    print("{: ^7}".format("*"*(2*i+1)))
for i in range(0,3):
    print("{: ^7}".format("*"*(5-2*i)))
 
print()
#显示菱形,使用字符串的center方法进行居中,该方法的原型是:str.center(width[, fillchar])
for i in range(0,4):
    print(("*"*(2*i+1)).center(7," "))
for i in range(0,3):
    print(("*"*(5-2*i)).center(7," "))
4(2)
#显示三角形,使用字符串的format方法进行居中
for i in range(1,9):
    if i==8:    #输出最后一行的多个星号
        print('*'*(2*i-1))
    elif i==1:  #居中输出第一行的1个星号
        print('{:^15}'.format('*'))
    else:        #居中输出中间行的多个星号
        print('{:^15}'.format('*'+' '*(2*i-3)+'*'))
(二)结果图片:

1、

2、

3、

4(1)、

4(2)、

四、实验结果分析与体会


        通过本次流程控制结构实验,掌握了多分支语句 if…elif…else结构的用法,分支条件嵌套语句的使用,并了解了循环语句for、while结构的用法和跳转语句continue、break的应用,能应用print()函数和字符串的format方法控制输出字符图形。For循环用来遍历集合,通过不使用下标的方式来实现对集合中每一个元素的访问,此外,在while循环中,代码块的程序会一直执行,直到循环条件为0或False。但这里需要注意的是,若是循环条件一直为True,则程序无法跳出循环,称为死循环,必要时需要break跳出循环。使用continue语句,我们可以停止循环当前迭代,并继续下一个;使用break语句,即使while条件为真,我们也可以停止循环。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值