武汉理工大学python123实验——流程控制结构

1.百分制成绩转换五分制#1707

n = int(input())

if n>=90:
    print('A')
elif n>=80:
    print('B')
elif n>=70:
    print('C')
elif n>=60:
    print('D')
else:
    print('E')

2.角古猜想#73963

n = eval(input())
if n<=0:
    print('ERROR')
elif '.' in str(n):
    print('ERROR')
else:
    print(n,end=" ")
    sum = 0
    while True:
        if n==1:
            break
        if n%2==0:
            n = int(n/2)
            print(n,end=" ")
        else:
            n = n*3+1
            print(n,end=" ")
        sum+=1
    
    print(f'\n{sum}')
        

3.中国古代数学问题集锦#133159


def type_judge(question):
    """接收一个字符串为参数,根据参数调用不同函数执行不同代码。
    这种写法不规范,但把输入、输出都放在一个函数中,方便管理。
    """
    if question == '鸡兔同笼':
        chicken_rabbit()  # 用户输入为'鸡兔同笼'调用此函数
    elif question == '物不知数':
        amount_of_goods()  # 用户输入为'物不知数'调用此函数
    elif question == '二鼠打洞':
        two_mice()  # 用户输入为'二鼠打洞'调用此函数
    elif question == '李白买酒':
        libai_buy_wine()  # 用户输入为'李白买酒'调用此函数
    elif question == '宝塔上的琉璃灯':
        lamp_on_pagoda()  # 用户输入为'宝塔上的琉璃灯'调用此函数
    else:
        print('输入错误')


def chicken_rabbit():
    """
    在同一行内输入用空格分隔的两个整数,代表头和脚的数量,计算并输出笼中各有多少只鸡和兔,
    如无解则输出“Data Error!”,函数无返回值。
    输入:35 94
    输出:有23只鸡,12只兔
    输入:100 5
    输出:Data Error!
    """
    a,b = input().split()
    a = int(a)
    b = int(b)
    flag = 0
    for i in range(a+1):
        if i*2+(a-i)*4==b:
            print(f'有{i}只鸡,{a-i}只兔')
            flag=1
            
    if flag==0:
        print('Data Error!')
            


def amount_of_goods():
    """一些物品,不知道有多少个,3个3个数的话,还多出2个;5个5个数则多出3个;
    7个7个数也会多出2个。输入一个正整数,从小到大依次输出所有不超过输入数字
    且满足条件的物品数量,有多个答案时每行输出一个。
    例如输入:200
    输出:
    23
    128
    """
    a = int(input())
    for i in range(a+1):
        if i%3==2 and i%5==3 and i%7==2:
            print(i)


def two_mice():
    """有一堵十尺厚的墙,两只老鼠从两边向中间打洞。大老鼠第一天打洞一尺,小老鼠也是打洞一尺。
    大老鼠每天的打洞进度是前一天的一倍,小老鼠每天的进度是前一天的一半。计算并输出它们几天可以相逢,
    相逢时各打了多少尺。
    输入格式:输入1 个整数,代表墙的厚度,单位为尺
    输出格式:
    第一行输出1 个整数,表示相遇时所需的天数
    第二行输出2 个浮点数,分别为小鼠和大鼠打洞的距离,单位为尺,保留小数点后1 位数字。
    """
    n = int(input())
    a = 1
    b = 1
    sa = 0
    sb = 0
    sum = 0
    while True:
        t = n
        n = n - a
        sa+=a
       
        n = n - b
        sb+=b
        
        sum+=1
        if n==0:
            print(sum)
            print(sb,sa)
            break
        elif(n<0):
            print(sum)
            sa-=a
            sb-=b
            n = n+a+b
            sa+=n*(a/(a+b))
            sb+=n*(b/(a+b))
            print(f'{sb:.1f}',f'{sa:.1f}')
            break
        a = a*2
        b = b/2
        
        

def libai_buy_wine():
    """大诗人李白,提着酒壶,从家里出来,酒壶中有酒若干。他边走边唱:无事街上走,提壶去买酒,
    遇店加一倍,见花喝一斗,五遇店和花,喝光壶中酒,计算并输出壶中原有酒几斗?"""
    a = 0
    for i in range(5):
        a+=1
        a/=2
    print(a)
    


def lamp_on_pagoda():
    """有一座八层宝塔,每一层都有一些琉璃灯,每一层的灯数都是上一层的二倍,
    已知共有765 盏琉璃灯,计算并输出每层各有多少盏琉璃灯。
    输出为8行,从上往下数字依次增大。
    """
    ls = [1,2,4,8,16,32,64,128]
    a = 765/sum(ls)
    for i in range(8):
        print(f'第{i+1}层上有{int(a*ls[i])}只琉璃灯')


if __name__ == '__main__':
    choice = input()    # 接收用户输入的字符串
    type_judge(choice)  # 调用判断输入的函数决定执行哪个函数

4.计算函数曲线与x轴包围的面积 #2502

a,b = input().split()
a=float(a)
b = float(b)
c = int(input())

import math
sum = 0
stp = abs(a-b)/c
nowi = a
for i in range(c):
    sum += abs(stp*(abs(math.sin(nowi))+abs(math.sin(nowi+stp)))/2)
    nowi+=stp
print(f'{sum:.2f}')

5.二分法求函数的零点 #37177

n = int(input())
a = 1.5
ss=1
for i in range(n):
    ss/=10

b = 2.4

def func(x):
    return x**5-15*x**4+85*x**3-225*x**2+274*x-121
    
    
while(1):
    mid = (a+b)/2
    
    tp = func(mid)
    
    if tp>0:
        a=mid
    elif tp<0:
        b=mid
    if tp==0:
        print(f'{mid:.6f}')
        break
    
    ####################################
    if abs(tp)<10**(-n):
        print(f'{mid:.6f}')
        break

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值