Python程序控制结构

1.sdut-分段计算居民水费
为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费y(元)与月用水量x(吨)相关,请编写程序实现水费的计算。
(1)当x不超过15吨时,y=4x/3;
(2)超过后,y=2.5x−17.5。
输入格式:
在一行中给出非负实数x。

输出格式:
在一行输出应交的水费,精确到小数点后2位。

输入样例1

12

输出样例1

16.00

输入样例2

16

输出样例2

22.50

code:

def Count(x):
    if x <= 15:
        return 4 * x / 3
    else:
        return 2.5 * x - 17.5

if __name__ == '__main__':
    print("{:.2f}".format(Count(float(input()))))

2.超速罚款 - 实验4 条件与分支 -《Python编程实验》
开车超速是要罚款的,某国相应法律如下:

情况 处罚
车速 ≤ 限速 程序输出:未超速
超速比 ≤ 10% 程序输出:超速警告
10% <超速比≤ 20% 程序输出:罚款100元
20% <超速比≤ 50% 程序输出:罚款500元
50% <超速比≤ 100% 程序输出:罚款1000元
超速比 > 100% 程序输出:罚款2000元
请编写程序,程序从输入的第1行读取车速(整数),从输入的第2行读取限速值(整数),然后使用条件分支语句进行判断,输出如表所示的处罚结论。

输入格式:
车速
限速值

输出格式:
如表所示的处罚结论

输入样例:

149
100

输出样例:

罚款500

code:

def judge(v, maxv):
    if v <= maxv:
        print("未超速")
    elif v / maxv <= 1.1:
        print("超速警告")
    elif v / maxv <= 1.2:
        print("罚款100元")
    elif v / maxv <= 1.5:
        print("罚款500元")
    elif v / maxv <= 2:
        print("罚款1000元")
    else:
        print("罚款2000元")

if __name__ == '__main__':
    v = int(input())
    maxv = int(input())
    judge(v, maxv)

3.百钱百鸡
百钱百鸡问题的白话版:100元钱买100只鸡,公鸡5元1只,母鸡3元1只,小鸡1元3只。问公鸡、母鸡、小鸡各多少只(某种鸡可以为0只)?

百钱百鸡的结果如输出样例所示。

现在把100改为n,即n元钱买n只鸡,各种鸡价格不变,结果又如何呢?

输入格式:
测试数据有多组,处理到文件尾。每组测试输入一个整数n(100<=n<=1000)。

输出格式:
对于每组测试,按公鸡、母鸡、小鸡的数量(按公鸡数从小到大的顺序)逐行输出各种买法(每行数据之间空一个空格)。
输入样例:

100

输出样例:

0 25 75
4 18 78
8 11 81
12 4 84

code:

def func(num):
    for i in range(num // 5):
        for j in range(num // 3):
            k = num - i - j
            if 5 * i + 3 * j + k / 3 == num:
                print(i, j, k)

def main():
    try:
        while True:
            n = int(input())
            func(n)
    except EOFError:
        pass

if __name__ == '__main__':
    main()

4.奖金计算,循环与多分支(高教社,《Python编程基础及应用》习题6-5)
企业发放的奖金根据利润提成。利润低于或等于100,000元的,奖金可提10%;利润高于100,000元,低于200,000(100,000 < p <=200,000)时,100,000元及以内部分按10%提成,高于100,000元的部分,可提成7.5%; 200,000 < p <= 400,000时,200,000元及其以内的部分仍按上述办法提成(下同),高于200,000元的部分按5%提成; 400,000 < p <=600,000元时,高于400,000元的部分按3%提成; 600,000 < p <=1,000,000时,高于600,000元的部分按1.5%提成; p >1,000,000时,超过1,000,000元的部分按1%提成。 按上述需求,编写一个程序,该程序从键盘输入当月利润p,求应发奖金数。

输入格式:
利润总额(浮点数)

输出格式:
奖金数(保留两位小数)

输入样例:

230000

输出样例:

19000.00

code:

def main():
    n = float(input())
    lists = [100000, 200000, 400000, 600000, 1000000]
    percents = [0.1, 0.075, 0.05, 0.03, 0.015, 0.01]
    if n <= lists[0]:
        ans = n * percents[0]
    elif lists[0] < n <= lists[1]:
        ans = lists[0] * percents[0]\
              + (n - lists[0]) * percents[1]
    elif lists[1] < n <= lists[2]:
        ans = lists[0] * percents[0] + lists[0] * percents[1] \
              + (n - lists[1]) * percents[2]
    elif lists[2] < n <= lists[3]:
        ans = lists[0] * percents[0] + lists[0] * percents[1] + lists[1] * percents[2]\
              + (n - lists[2]) * percents[3]
    elif lists[3] < n <= lists[4]:
        ans = lists[0] * percents[0] + lists[0] * percents[1] + lists[1] * percents[2] \
              + lists[1] * percents[3] \
              + (n - lists[3]) * percents[4]
    elif n > lists[4]:
        ans = lists[0] * percents[0] + lists[0] * percents[1] + lists[1] * percents[2] \
              + lists[1] * percents[3] + lists[2] * percents[4] \
              + (n - lists[4]) * percents[5]
    print("%.2f"%ans)
if __name__ == '__main__':
    main()

5.打印沙漏
当n=5时,沙漏图形如输出样例所示。请观察并明确沙漏图形的规律。要求输入一个整数n,输出满足规律的沙漏图形。

输入格式:
测试数据有多组,处理到文件尾。每组测试输入一个整数n(1<n<20)。

输出格式:
对于每组测试,输出满足规律的沙漏图形。
输入样例:

5

输出样例:

*********
 *******
  *****
   ***
    *
   ***
  *****
 *******
*********

code:

def draw(n):
    num = 2 * n - 1
    for i in range(n):
        for j in range(i):
            print(' ', end = '')
        for j in range(num):
            print('*', end = '')
        print()
        num -= 2
    num = 3
    b = n - 2
    for i in range(n - 1):
        for j in range(b):
            print(' ', end = '')
        for j in range(num):
            print('*', end = '')
        print()
        b -= 1
        num += 2

def main():
    try:
        while True:
            n = eval(input())
            draw(n)
    except EOFError:
        pass

if __name__ == '__main__':
    main()
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值