Python 高级程序设计期中测试

Hello!欢迎来到六个核桃Lu!

1. 测试内容
(1) Python 基本语法元素;
(2) Python 基本数据类型及使用;
(3) Python 编程基本语法中的条件判断和循环控制结构;
(4) Python 编程基本语法中的函数及代码复用;
(5) Python 编程基本语法中的组合数据类型。
2. 测试要求
(1) 认真阅读测试题目要求,完成各项题目内容;
(2) 各项题目中, 需要写明程序设计思路,以及具体程序代码
3. 测试过程
1. 人民币和美元是世界上通用的两种货币之一,且人民币和美元间的汇率 动态变化。写一个程序,根据动态变化的汇率,进行货币间币值转换。程序可以 接受人民币或美元输入,转换为美元或人民币输出。人民币采用 RMB 表示,美元 USD 表示,符号和数值之间没有空格。
提示:人民币和美元间的动态汇率,通过 input()函数获取。
示例 1:
输入:"RMB123"
输出:"USD18.14"
示例 2:
输入:"USD20"
输出:"RMB135.60"
input_list=[]   # 定义一个输入列表 用来储存输入进来的数据
input_list=input("请输入货币及金额:")
hb=input_list[:3]   # 列表前三位
je=input_list[3:]   # 列表后三位
if  hb=='RMB':
    je = float(je) / 6.78    # 汇率为6.78
    print('USD'+str("%.2f"%je))  # "%.2f"%je 金额保留小数点后两位
else:
    je = float(je) * 6.78
    print('RMB'+str("%.2f"%je))
输出结果:

2. A 君: 一年 365 天,每天进步 1%,不停歇;
    B 君: 一年 365 天,每周工作 6 天休息 1 天。好好学习时能力值比前一天提高 1%,休息日下降 1%。
    B 君每周工作 6 天休息 1 天,计算 B 君工作日的努力参数是多少,才能与 A 君每天努力 1%一样。
提示:
(1) 一年 365 天,以第 0 天的能力值为基数,记为 1.0。
(2) B 君工作日的努力参数起始值为 0.01。
(3) 程序设计使用函数,且最终输出结果保留 3 位有效数字。

 这道题,核桃没有太理解它的数学逻辑,大家就当个参考吧~

# 工作量 = 每天的能力值相加
# 每天的能力值 = 基数+-(基数*努力参数)=基数*(1+-努力参数)
A = 1.0
B = 1.0
b_strive = 0.01  # B君工作日的努力参数 起始值为 0.01
sum_A = 0
sum_B = 0
# A的工作函数
def A_run(x):
    x = x * 1.01     # 每天进步 1%,即努力参数固定为0.01
    print("A今日能力值= ", "%.3f"%x)
    return x
# B的工作函数
def B_run(y, b_strive):
    y = y * (1+b_strive)
    print("B今日能力值=","%.3f"%y)
    return y
# 进入循环工作
for i in range(1000):
    print("————第", i, "天————")
    A = A_run(A)
    if i % 6 == 0:  # 休息日
        b_strive -= 0.01
        B = B_run(B, b_strive)
    else:           # 工作日
        b_strive += 0.01
        B = B_run(B, b_strive)
    sum_A += A
    sum_B += B
    if sum_A <= sum_B:  # 当B的工作量超过A或与A一致 跳出循环
        print("B君撵上了A君", "A的总工作量 =", "%.3f"%sum_A, "B的总工作量 =", "%.3f"%sum_B)
        print("此时B君工作日的努力参数是:", "%.3f"%b_strive)
        break
    i += 1

输出结果:


3. 双十一期间一家商场在降价促销,
        如果购买金额在[0,500)之间折扣为5%,
        [500,1000)之间折扣为 10%,
        [1000,3000)之间折扣为 30%,
        3000 元以上 折扣为 50%。
   编写一个程序,询问客户的购买价格,计算并显示折扣,以及最终价格。
Purchase_amount = int(input("请输入购买金额:"))
# 如果购买金额在[0,500)之间折扣为5%
if  0 <= Purchase_amount < 500:
    print("折扣为5%")
    Purchase_amount *= (1-0.05)
# [500,1000)之间折扣为 10%
elif 500 <= Purchase_amount < 1000:
    print("折扣10%")
    Purchase_amount *= (1-0.1)
# [1000,3000)之间折扣为 30%
elif 1000 <= Purchase_amount < 3000:
    print("折扣为30%")
    Purchase_amount *= (1-0.3)
# 3000 元以上折扣为 50%
else:
    print("折扣为50%")
    Purchase_amount *= (1 - 0.5)
print("最终价格为", Purchase_amount, "$")

 输出结果:


4. 运用 while 进行非确定次数循环,给学生三次输入用户名(真实姓名)和密码(学号)的机会,要求如下:
        第一行输入自己的姓名,如‘王凯’;第二行输入自己的学号,如 ‘20211105001’。
        若输入正确,输出‘登录成功!’并退出程序。
        若输入不正确,用户可继续尝试信息输入;
        当一共有 3 次输入姓名或学号输入不正确,输出提示信息“3 次输入信息均有误!退出程序”。
i = 0
while True:
    Name = input("输入自己的姓名:")
    Number = int(input("输入自己的学号:"))
    if Name == "王凯":
        if Number == 20211105001:
            print("登录成功!")
            break
    else:
        print("输入不正确!请继续尝试信息输入!")
    i += 1
    if i == 3:
        print("三次输入信息均有误!退出程序!")
        break

输出结果:

 


5. 从键盘获取用户输入 n,求和 1!+2!+3!…… +n!
示例:
输入:"10"
输出:"4037913"
n =int(input("请输入n:"))
# 阶乘函数 迭代函数本身
def Factorial(n):   
    if n-1 == 0:
        return 1
    else:
        return n * Factorial(n-1)
sum = 0     # 和
while True:
    if n == 0:
        print("输出:",sum)
        break
    else:
        sum += Factorial(n)
    n-=1

输出结果:


6. 随机产生10个[0,1)之间的随机小数,并将这10个数添加到一个列表中。
import random
list=[]    # 定义一个列表
for i in range(10):     # 循环10次
    list.append(random.random())    # 随机生成小数 并添加进列表
print(list)

 输出结果:

[0.44740796339536193, 0.7529664388836526, 0.40372627736375055, 0.10194916112480756, 0.46636740848855385, 0.37870325472456, 0.6766166769170668, 0.6223010848508999, 0.09149218718559704, 0.19987081475339574]

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程日记✧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值