Python三大结构练习3

1.温度转换

题目描述

输入摄氏温度(华氏温度),输出对应的华氏温度(摄氏温度)。这里采用82F表示华氏82度,采用28C表示摄氏28度,实数部分是温度值。

转换算法

C=(F-32)/1.8

F=C*1.8+32

其中,C表示摄氏温度,F表示华氏温度。

代码

#TempConvert.py
TempStr=input("请输入带有符号的温度值:")
if TempStr[-1] in ['F','f']:#根据最后一个字符,判断是否为华氏温度
    C=(eval(TempStr[0:-1])-32)/1.8
    print("转换后的温度是{:.2f}C".format(C))#输出摄氏温度,保留最后两位小数
elif TempStr[-1] in ['C','c']:#根据最后一个字符,判断是否为摄氏温度
    F=1.8*eval(TempStr[0:-1])+32
    print("转换后的温度是{:.2f}F".format(F))#输出华氏温度,保留最后两位小数
else:#其他情况
    print("输入格式错误")

示例

2.长度转换

题目描述

参考温度转换实例编制一个长度转换程序。

假定1米=3尺

代码

LengthStr = input("请输入带有单位的长度值:")
if LengthStr[-1] == "米":
    inch = eval(LengthStr[0:-1])/3.33
    print("转换后的长度为:{:.2f}尺".format(inch))
elif LengthStr[-1] == "尺":
    meter = eval(LengthStr[0:-1])*3.33
    print("转换后的长度为:{:.2f}米".format(meter))
else:
    print("输入格式错误")

输出结果:

3.货币间币值转换

题目描述:

人民币和美元是世界上通用的两种货币之一,写一个程序进行货币间币值转换,其中:

人民币和美元间汇率固定为:1美元 = 6.78人民币。

程序可以接受人民币或美元输入,转换为美元或人民币输出。人民币采用¥符号或RMB表示,美元采用$或USD表示,符号和数值之间没有空格。

注意:

人民币和美元间符号在转换中要对等,¥和$相互对应,RMB和USD相互对应。

运行示例:

示例输入输出
1$128.00867.84
212.9$1.90
3RMB123USD18.14
4USD20RMB135.60

代码:

# 货币间币值转换
MoneyStr = input()
if MoneyStr[0:3] == "RMB":
    money = eval(MoneyStr[3:])/6.78
    print("USD{:.2f}".format(money))
elif MoneyStr[0] == "¥":
    money = eval(MoneyStr[1:])/6.78
    print("${:.2f}".format(money))
elif MoneyStr[0:3] == "USD":
    money = eval(MoneyStr[3:])*6.78
    print("RMB{:.2f}".format(money))
elif MoneyStr[0] == "$":
    money = eval(MoneyStr[1:])*6.78
    print("¥{:.2f}".format(money))
else:
    print("输入格式错误")

4.数字组合

题目描述:

有四个数字:1、2、3、4,能组成多少个互不相同无重复数字的三位数?各是多少?

程序分析 :遍历全部可能,找到符合条件的数字。这里使用三重循环和if语句来进行实现。

代码实现:

"""
有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
"""
nums = []  # 定义一个空列表,存储符合要求的数字
for i in range(1, 5):
    for j in range(1, 5):
        for k in range(1, 5):
            if i != j and j != k and k != i:
                num = i * 100 + j * 10 + k
                nums.append(num)
print("共有{}个满足条件的数字.".format(len(nums)))
print("满足条件的数字为:{}".format(nums))

输出结果为:

共有24个满足条件的数字.
满足条件的数字为:[123, 124, 132, 134, 142, 143, 213, 214, 231, 234, 241, 243, 312, 314, 321, 324, 341, 342, 412, 413, 421, 423, 431, 432]

5. “个税计算”

题目描述: 

企业发放的奖金根据利润提成。

  • 利润低于或等于10万元时,奖金可提10%;
  • 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;
  • 20万到40万之间时,高于20万元的部分,可提成5%;
  • 40万到60万之间时高于40万元的部分,可提成3%;
  • 60万到100万之间时,高于60万元的部分,可提成1.5%;
  • 高于100万元时,超过100万元的部分按1%提成。

从键盘输入当月利润,求应发放奖金总数?

程序分析 :使用多分支结构进行实现。

代码实现:

"""
个税计算。
"""
profit = eval(input("请输入月利润:"))
bonus = 0
if profit <= 10:
    bonus = profit * 0.1
elif 10 < profit <= 20:
    bonus = 10 * 0.1 + (profit - 10) * 0.075
elif 20 < profit <= 40:
    bonus = 10 * 0.1 + 10 * 0.075 + (profit - 20) * 0.05
elif 40 < profit <= 60:
    bonus = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + (profit - 40) * 0.03
elif 60 < profit <= 100:
    bonus = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + (profit - 60) * 0.015
elif profit > 100:
    bonus = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + 40 * 0.015 + (profit - 100) * 0.01
print("奖金为:{:.2f}万元".format(bonus))

6. 完全平方数

题目描述:

 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

完全平方指用一个整数乘以自己例如1×1,2×2,3×3等,依此类推。若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数。完全平方数是非负数,而一个完全平方数的项有两个。

代码实现:

"""
 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
"""


def is_perfect_square(n):
    """判断一个数是否为完全平方数"""
    root = int(n ** 0.5)
    return root * root == n


# 假设整数n的范围,可以根据实际情况调整
n_min = 0  # 可以是任何可能的最小值
n_max = 1000  # 可以是任何可能的最大值

# 遍历可能的整数n
for n in range(n_min, n_max + 1):
    # 检查n+100是否为完全平方数
    if is_perfect_square(n + 100):
        # 检查n+268是否为完全平方数
        if is_perfect_square(n + 268):
            # 如果都满足,打印结果并退出循环
            print(f"满足条件的整数n是:{n}")
            break  # 假设只有一个解,找到后退出循环
else:
    print("在给定范围内没有找到满足条件的整数n。")

输出结果为:

满足条件的整数n是:21

7. 高空抛物

题目描述:

一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

题目分析:

这个问题可以通过一个循环来解决,其中每次迭代都模拟球的一次落下和反弹。

100+50*2+25*2+12.5*2+...

代码实现:

# 初始化变量
altitude = 100  # 初始高度
total_distance = 100  # 总距离
n = 10  # 总共要计算的落地次数

# 循环计算每次落地和反弹的距离
for i in range(1, n):
    # 总距离 = 落地距离(高度) +反弹距离
    total_distance += altitude
    # 落地距离 = 反弹距离
    altitude /= 2

# 第10次落地时,球不会再次反弹,所以不需要再加反弹高度
print(f"第{n}次落地时,球共经过 {total_distance} 米。")

# 第10次反弹的高度是前一次的一半
print(f"第{n}次反弹的高度是 {altitude / 2} 米。")

输出结果为:

 

8. 比赛对手

题目描述

两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

代码实现:

a = {'x', 'y', 'z'}
b = {'x', 'y', 'z'}
c = {'x', 'y', 'z'}
c -= {'x', 'z'}  # c不和 x,z比
a -= set('x')  # a不和 x比
for i in a:
    for j in b:
        for k in c:
            if len({i, j, k}) == 3:
                print('a:%s,b:%s,c:%s' % (i, j, k))

输出结果为:a:z,b:x,c:y

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

W_chuanqi

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

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

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

打赏作者

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

抵扣说明:

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

余额充值