python-程序的控制结构及函数使用

《Python高级应用》实验报告

实验名称 : 实验3 程序的控制结构及函数使用
实验日期 :   2021.4.7 姓 名 : 汪珊珊      
学 号 :  084619248        
班 级 :   计算机192

成 绩 :    
人工智能与信息技术学院
南京中医药大学

实验目的:
(1)熟悉 Python程序控制结构使用
(2)熟练使用函数相关操作
(3)掌握pyinstaller库的使用

实验内容和要求
1、猜数游戏。
随机产生一个预设数字,在0~100之间。
用户通过键盘输入想猜数字,如果大于预设数字,显示“遗憾,太大了”;小于预设数字,显示“遗憾,太小了”;当用户输入的不是整数(如字母、浮点数等),给出提示“输入的内容必须是整数”;如此循环,直到猜中该数,显示“预测N次,你猜中了!”,其中N是用户输入的次数。

2、请在实现Fabnacci数列求和的基础上,计算和与任意个输入数字的乘积。要求输入的不是数字时,提示“输入有误”。调用函数时,将函数置于if name==‘main’下运行。

3、获取系统时间,使用七段数码管显示获取到的系统时间。要求美观(间隔、颜色、出现并摆放好“年月日”)

4、倒计时数码管绘制
输入你想从某个数倒计时,绘制对应的数码管。并对最后的倒计时数码管对应的.py代码进行打包,生成.exe文件。
提示:turtle.clear()清空画板
选做:显示“倒计时结束!”,turtle.write()函数

5、验证课件上组合数据类型相关的代码。

运行结果(写清题号)
1.猜数游戏。
随机产生一个预设数字,在0~100之间。
用户通过键盘输入想猜数字,如果大于预设数字,显示“遗憾,太大了”;小于预设数字,显示“遗憾,太小了”;当用户输入的不是整数(如字母、浮点数等),给出提示“输入的内容必须是整数”;如此循环,直到猜中该数,显示“预测N次,你猜中了!”,其中N是用户输入的次数。
import random

guess = 0 # 猜的数字

secert = random.randint(0, 100) # 生成0-100的随机数

times = 1 # 猜的次数
while guess != secert: # 条件
guess = input(‘数字区间0-100,请输入你猜的数字:’)
if type(guess) != int:
print(“输入的内容必须是整数”)
if guess == secert: # 判断猜的数字是否为预设的数字
print(‘你猜了{}次,你猜中了!’.format(times))
else: # 如果不正确
if guess < secert: # 猜的数字小于预设的数字
print(‘遗憾,太小了!’)
else: # 猜的数字大于预设的数字
print(‘遗憾,太大了!’)
times += 1

print(‘游戏结束’)

2.请在实现Fabnacci数列求和的基础上,计算和与任意个输入数字的乘积。要求输入的不是数字时,提示“输入有误”。调用函数时,将函数置于if name==‘main’下运行。

在文件text_A中

num=int(input(“你需要第几项”))
n1=0
n2=1
count=2
if num<=0:
print(“请输入一个正整数”)
elif num==1:
print(n1)
else:
while count<num:
sum=n1+n2
n1=n2
n2=sum
count+=1
print(n2)

if name==‘main’:
print(“name 得到”, name)
print(“n2:”, n2)

from text_A import n2

从text_A中调入变量n2

def main():
print(n2)

if name == ‘main’:
main()

n=int(input(“你要输入几个数”))
list=[]
for i in range(n):
list.append(int(input(“请输入你的值”)))
for i in range(n):
n2=n2*list[i]
print(“乘积是:{}”.format(n2))
exit(0)

3.获取系统时间,使用七段数码管显示获取到的系统时间。要求美观(间隔、颜色、出现并摆放好“年月日”)
import turtle, time

def drawGap():
turtle.speed(0) # 设置画笔速度 “fastest”:0 “fast”:10 “normal”:6 “slow”:3 “slowest”:1
# turtle.Turtle().screen.delay(0) #画笔速度无延迟
turtle.penup()
turtle.fd(5)

def drawLine(draw): # 绘制单段数码管
drawGap()
turtle.speed(0)
# turtle.Turtle().screen.delay(0)
turtle.pendown() if draw else turtle.penup()
turtle.fd(40)
drawGap()
turtle.right(90)

def drawDigit(digit): # 根据数字绘制七段数码管
drawLine(True) if digit in [2, 3, 4, 5, 6, 8, 9] else drawLine(False)
drawLine(True) if digit in [0, 1, 3, 4, 5, 6, 7, 8, 9] else drawLine(False)
drawLine(True) if digit in [0, 2, 3, 5, 6, 8, 9] else drawLine(False)
drawLine(True) if digit in [0, 2, 6, 8] else drawLine(False)
turtle.left(90)
drawLine(True) if digit in [0, 4, 5, 6, 8, 9] else drawLine(False)
drawLine(True) if digit in [0, 2, 3, 5, 6, 7, 8, 9] else drawLine(False)
drawLine(True) if digit in [0, 1, 2, 3, 4, 7, 8, 9] else drawLine(False)
turtle.left(180)
turtle.penup() # 为绘制后续数字确定位置
turtle.fd(20) # 为绘制后续数字确定位置

def drawDate(date):
turtle.pencolor(“purple”)
for i in date:
if i == ‘+’:
turtle.write(“年”, font=(“Arial”, 18, “normal”))
turtle.pencolor(“pink”)
turtle.fd(40)
elif i == ‘-’:
turtle.write(“月”, font=(“Arial”, 18, “normal”))
turtle.pencolor(“orange”)
turtle.fd(40)
elif i == ‘*’:
turtle.write(“日”, font=(“Arial”, 18, “normal”))
turtle.pencolor(“lightyellow”)
turtle.fd(70)

    elif i == '$':
        turtle.write("时", font=("Arial", 18, "normal"))
        turtle.pencolor("lightgreen")
        turtle.fd(40)
    elif i == '&':
        turtle.write("分", font=("Arial", 18, "normal"))
        turtle.pencolor("lightblue")
        turtle.fd(40)
    elif i == '@':
        turtle.write("秒", font=("Arial", 18, "normal"))

    else:
        drawDigit(eval(i))

def main(): # 主函数
turtle.setup(1600, 1000, 0, 0)
turtle.penup()
turtle.left(90)
turtle.fd(200)
turtle.right(90)
turtle.fd(-600)
turtle.pensize(5)
drawDate(time.strftime("%Y+%m-%d*%H$%M&%S@", time.gmtime()))
turtle.hideturtle()
turtle.done()
main()

4.倒计时数码管绘制
输入你想从某个数倒计时,绘制对应的数码管。并对最后的倒计时数码管对应的.py代码进行打包,生成.exe文件。
提示:turtle.clear()清空画板
选做:显示“倒计时结束!”,turtle.write()函数
import turtle,time
def drawgap():
turtle.penup()
turtle.fd(5)
def drawline(draw):
drawgap()
turtle.pendown()if draw else turtle.penup()
turtle.fd(40)
drawgap()
turtle.right(90)
def drawdigit(digit):
drawline(True) if digit in [2,3,4,5,6,8,9] else drawline(False)
drawline(True) if digit in [0,1,3,4,5,6,7,8,9] else drawline(False)
drawline(True) if digit in [0,2,3,5,6,8,9] else drawline(False)
drawline(True) if digit in [0,2,6,8] else drawline(False)
turtle.left(90)
drawline(True) if digit in [0,4,5,6,8,9] else drawline(False)
drawline(True) if digit in [0,2,3,5,6,7,8,9] else drawline(False)
drawline(True) if digit in [0,1,2,3,4,7,8,9] else drawline(False)
turtle.left(180)
turtle.penup()
turtle.fd(20)
def drawtimecount(t):
for i in range(t+1):
start=time.perf_counter()
drawdigit(t-i)
time.sleep(1-(time.perf_counter()-start))
turtle.clear()
turtle.penup()
turtle.goto(0,0)
turtle.pendown
turtle.pencolor(‘purple’)
turtle.penup()
turtle.goto(-300,-20)
turtle.pendown
turtle.write(‘倒计时结束!’‘TIME IS OVER’,font=(‘楷体’,30,‘normal’))
def main():
turtle.setup(800,350,200,200)
turtle.penup()
turtle.pensize(5)
turtle.speed(0)
drawtimecount(9)
turtle.hideturtle()
turtle.done()
main()

5、验证课件上组合数据类型相关的代码。

实验的体会与建议
1.在条件语句if-else多的情况下格式容易出现问题
2.对题目要求有的时候不太理解,如:第二题
每个 .py 文件都有一个变量名__name__, 这个变量名的值会根据这个文件的用途有两个不同的值。
一、当文件作为模块被其他文件使用时,name 的值是这个文件的模块名[文件名]
二、当文件作为脚本(就是作为可执行文件)使用时,__name__的值是字符串类型的’main
__name__是python的内置变量,用于表示当前模块的名字
所以if name == ‘main’ 拆开来看其实就是一个 if a == b 的判断语句
当我们在模块 text_B 中调用模块 text_A 中定义的变量x的时候,整个text_A都会执行一遍
之所以没有将text_A的输出显示在text_B上
是因为当文件text_A处于被调用的状态的时候,它的__name__的值已经变成了模块名text_A,,而不是等于字符串"main"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值