湖南大学python头歌实训 实验3:分支语句(二)

实验四 分支结构

第1关:判断三角形类型

x=eval(input("边长一"))
y=eval(input("边长二"))
z=eval(input("边长三"))
#代码开始
#代码结束
l1 = [x,y,z]
a,b,c = sorted(l1)
if a+b<c:
    print('无法构成三角形')
else:
    if a==b==c:
        print('等边三角形')
    elif a**2+b**2 == c**2:
        print('直角三角形')
    else:
        print('普通三角形')

先比较再判断

第2关:分段函数

x=eval(input())
#代码开始
y = 0
if x<1:
    y = x
elif 1<=x<10:
    y = 2*x - 1
else:
    y = 3*x - 1
#代码结束
print("{:.2f}".format(y))

第3关:阶梯电价计算电费

sy=eval(input("输入上月电表度数"))
by=eval(input("输入本月电表度数"))
yf=eval(input("输入月份"))
#代码开始
ds = by - sy
df1 = 200*0.588
if ds<200:
    df = 0.588*ds
else:
    if yf in [3,4,5,9,10,11]:
        if ds<=350:
            df = df1 + (ds - 200)*0.638
        else:
            df = df1 + 150*0.638 + (ds-350)*0.888
    else:
        if ds <= 450:
            df = df1 + (ds - 200)*0.638
        else:
            df = df1 + 250*0.638 + (ds - 450)*0.888
#代码结束
print("用电度数{:.2f}电费{:.2f}".format(ds,df))

这种是期中考试大题(必考?),好好熟悉。

第4关:阶梯水价计算水费

sy=eval(input("输入上月水表吨数"))
by=eval(input("输入本月水表吨数"))
rs=eval(input("输入家庭人数"))
db=input("是否低保(y/n)")
#代码开始
userge = by - sy
if db =='y':
    sl = userge - 6
else:
    sl = userge
if rs < 5:
    if sl <= 15 :
        sf = 2.58 * sl
    elif  15 < sl <= 22:
        sf = 3.34*(sl-15)+2.58*15
    else:
        sf = 2.58*15+3.34*7+(sl-22)*4.09
else:
    if sl/rs <= 4:
        sf = 2.58*sl
    elif 4 < sl/rs <= 5:
        sf = 3.34*(sl - rs*4)+4*rs*2.58
    else:
        sf = 4.09*(sl - rs*5)+rs*3.34+2.58*rs*4
if sf<0:
    sf = 0
print("用水吨数(减免后){:.2f}水费{:.2f}".format(sl,sf))

注意考虑减免太多,水费为负数,难道还有倒贴给你?QAQ

第5关:手机话费计算

ll=eval(input("流量"))
thsj=eval(input("通话时间"))
#代码开始
#代码结束
cost = 128
ct_cost = (thsj-500)*0.15    
if ll<33:
    md_cost = (ll-30)*5.00
else:
    md_cost = 15 + (ll-33)*3.00
if ct_cost>0:
    cost += ct_cost
if md_cost > 0:
    cost += md_cost
print("费用"+'{:.2f}'.format(cost))

大家如果碰到给你推销这种套餐的人,果断拉黑,想把你当猪宰。

第6关:血压判断

x=eval(input())
y=eval(input())
#代码开始
if x>=90 or y>=140:
    print('高血压')
elif x<60 or y<90:
    print('低血压')
else:
    print('正常血压')
#代码结束

 大学生也要好好锻炼,我就很喜欢学校的乐跑:(

第7关:党费计算

ch=input("")
s=eval(input(""))
rate = 0
if ch=='n' or ch=='N':
    if s<=3000:
        rate = 0.005
    elif 3000<s<=5000:
        rate = 0.01
    elif 5000<s<=10000:
        rate = 0.015
    else:
        rate = 0.02
else:
    if s<=5000:
        rate = 0.005
    else:
        rate = 0.01
df = s*rate

#代码开始
#代码结束
print("{:.2f}".format(df))

第8关 周薪计算

gzbz=eval(input("工资标准"))
gzr=eval(input("工作日工作时间"))
xxr=eval(input("休息日工作时间"))
if xxr<=4:
    xxrgz = xxr*2*gzbz
else:
    xxrgz = 2*4*gzbz+(xxr-4)*gzbz*3
if gzr<=40:
    gzrgz = gzr * gzbz
else:
    gzrgz = 40*gzbz+(gzr-40)*1.5*gzbz
gz = xxrgz + gzrgz
#代码开始
#代码结束
print("工资{:.2f}".format(gz)) 

总结:

多多动手,熟悉阶梯计价,考完期中你就知道了。

实验3-1-程序控制-选择结构

第1关:关系运算符与单分支选择语句

#######Begin your code here#######
n = int(input())
if n>0:
    print('正数\n')
#######End your code here#######

第2关:单按钮灯光开关控制

light=input()        #从测试集读入light值,此部分代码不用修改

######begin 从此处向下,开始你的编码,根据ligth的值进行输出###

light = '关' if light == '开' else '开'
print(light)



#####end###

第3关:求解一元二次方程组

import math        
a=float(input())        
b=float(input())        
c=float(input())

def quadratic_equation(a, b, c):
    discriminant = b ** 2 - 4.0 * a * c

    if discriminant < 0:
        sb = -b/2/a
        xb1 = math.sqrt(- b ** 2 + 4.0 * a * c) / (2 * a)
        xb2 = -math.sqrt(- b ** 2 + 4.0 * a * c) / (2 * a)
        x1 = complex(sb,xb1)
        x2 = complex(sb, xb2)
        return x1,x2
    elif discriminant == 0:
        x = -b / (2 * a)
        return x
    else:
        if a != 0:
            x1 = (-b + math.sqrt(discriminant)) / (2 * a)
            x2 = (-b - math.sqrt(discriminant)) / (2 * a)
            return x1, x2
        else:
            x = -c/b
            return  x
roots = quadratic_equation(a,b,c)
if type(roots)==float:
    print("x=", roots)
elif type(roots)==tuple:
    x1,x2 = roots
    print("x1=",x1,"x2=",x2)
else:
    print("x1=", x1, "x2=", x2)

这个有点小难度了,需要考虑的情况有点多,多写两遍吧!(可以不定义函数)

第4关:输入分数,输出等级

score=float(input())        #读入测试变量score


#**********begin*******以下编写代码实现
if score >= 90 and score <= 100:
    print("等级A")
elif score >= 80 and score < 90:
    print("等级B")
elif score >= 70 and score < 80:
    print("等级C")
elif score >= 60 and score < 70:
    print("等级D")
else:
    print("等级E")
#**********end***********

第5关:3个数按从大到小依次输出

#######Begin your code here#######
l1 = input().split()
l2 = [eval(num) for num in l1]
num3,num2,num1 = sorted(l2)
print(num1, num2, num3)
#######End your code here#########

第6关:水仙花数与四叶玫瑰数 

#######Begin your code here#######
num = int(input())
if num in[153,370,371,407]:
    print('narcissistic')
elif num in [1634,8208,9474]:
    print('rose')
else:
    print('neither')
#######End your code here#########

偷懒了,其实和前面回文数核心一样的,懒得写啦QAQ

第二章-Python语言基础-2.2条件分支(理科)

第1关:python分支入门基础


# -*- coding: utf-8 -*-
"""
Created on Tue Sep  8 06:29:54 2020

@author: hzh
"""

# 第1题:
year = int(input())
# 如果是闰年输出yes
####### begin #######
if year%4 == 0 or year%400 == 0:
    print('yes')
else:
    print('no')
####### end #########
# 如果不是闰年,输出no
####### begin #######

####### end #########


# 第2题:
month = int(input())
# 30天的月份:4,6,9,11
# 如果是30天的月份输出yes
####### begin #######
if month in [4,6,9,11]:
    print('yes')
else:
    print('no')
####### end #########
# 如果不是30天的月份,输出no
####### begin #######

####### end #########


# 第3题:
# 从键盘输入成绩,等级默认为0级
scores = int(input())
grade = '0'
# 如果成绩>=90分的输出'A'
####### begin #######
if scores>=90:
    grade = 'A'
####### end #########
# 否则成绩60-89分之间的用B表示
if 60<=scores<=89:
    grade = 'B'
####### end #########
# 60分以下的用C表示
if scores<60:
    grade = 'C'
####### end #########
print(grade)

# 第4题:
# 从键盘输入风速
v = int(input())
# 默认是0级
rank = 0
# 如果风速在74到95之间,输出1
####### begin #######
if 74<=v<=95:
    rank = 1
elif 96<=v<=110:
    rank = 2
elif 111<=v<=130:
    rank = 3
elif 131<=v<=154:
    rank = 4
elif 155<=v:
    rank = 5

print(rank,end='')

我还以为点错题目了

第2关:python分支基础训练

def print_(x):
    if type(x) == float:
        print("%.4f" % x)
    else:
        print(x)

import math
# 第1题
# 数据来源于列表
for temp in [-280, -100, 0, 20, 120, 200]:
    # 请在下面编写代码
    # ********** Begin ********** #
    if temp>-273.5:
        F = 9/5*temp+32
    else:
        F = None
    # ********** End ********** #
    # 请不要修改下面的代码
    print_(F)

print('\n***********************\n')

# 第2题
# 数据来源于列表
for number in [-101.23, -3.14, 0, 12.55, 1908]:
    # 请在下面编写代码
    # ********** Begin ********** #
    number = number if number >= 0 else -number
    # ********** End ********** #
    # 请不要修改下面的代码
    print_(number)

print('\n***********************\n')

# 第3题
# 数据来源于列表
for (num1, num2) in [(12, 34), (-6, -7), (-12, 23), (-273, 0), (0, 199)]:
    # 请在下面编写代码
    # ********** Begin ********** #
    a = min(num2,num1)
    b = max(num2,num1)
    # ********** End ********** #
    # 请不要修改下面的代码
    print(a,'  ',b)

print('\n***********************\n')

# 第4题
# 数据来源于列表
for (num1, num2, num3) in [(-231, -321, 123), (100, 0, -99), (-980, -1002, -1), (6, 1, 2017)]:
    # 请在下面编写代码
    # ********** Begin ********** #
    l = sorted([num1,num2,num3])
    num1 = l[0]
    num2 = l[1]
    num3 = l[2]
    # ********** End ********** #
    # 请不要修改下面的代码
    print(num1, num2, num3)

print('\n***********************\n')

# 第5题
# 数据来源于列表
for (num1, num2) in [(10, 5), (12, 34), (89, 0), (-100, 23), (789, -123)]:
    # 请在下面编写代码
    # ********** Begin ********** #
    if num2 != 0:
        result = num1/num2
    else:
        result = None
    # ********** End ********** #
    # 请不要修改下面的代码
    print_(result)

print('\n***********************\n')

# 第6题
# 数据来源于列表
def quadratic_equation(a, b, c):
    discriminant = b ** 2 - 4 * a * c

    if discriminant < 0:
        return None
    elif discriminant == 0:
        x = -b / (2 * a)
        return x
    else:
        x1 = (-b + math.sqrt(discriminant)) / (2 * a)
        x2 = (-b - math.sqrt(discriminant)) / (2 * a)
        return x1, x2


for (a, b, c) in [(1, 2, 1), (1, -2, 1), (1, 2, -3), (12, 34, 56), (78, 89, 100)]:
    roots = quadratic_equation(a, b, c)
    if roots is None:
        print(None,None)
    elif isinstance(roots, float):
        print(roots, roots)
    else:
        x1, x2 = roots
        print(x1,x2)
    # else:
    #     print("方程的实根为:", roots)
    # ********** End ********** #
    # 请不要修改下面的代码

print('\n***********************\n')

# 第7题
# 数据来源于列表
for x in [-9, -8, -7, -6, -5, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8]:
    # 请在下面编写代码
    # ********** Begin ********** #
    if -10 <= x< -8:
        fx = x-2
    elif -8 <= x < -6:
        fx = x+3
    elif -6 <= x <= -2:
        fx = x**2
    elif -2 < x < 2:
        fx = x if x >= 0 else -x
    elif 2 <= x <= 4:
        fx = x**3
    elif 4 < x <= 6:
        fx = 3*x-4
    elif 6 < x <= 8:
        fx = 4*x+1
    # ********** End ********** #
    # 请不要修改下面的代码
    print_(fx)

第3关:python分支综合训练

# 第一题
# 数据来源列表,每组数据输出一个结果
for (Weight, Height) in [(60, 1.65), (40, 1.60), (80, 1.70), (75, 1.83), (88, 1.80)]:
    bmi = float(Weight / pow(Height, 2))
    wto, dom = " ", " "
    # 请在下面编写代码
    # wto, dom的结果为字符串类型的"肥胖","偏瘦","偏胖","正常"
    # ********** Begin ********** #
    bmi1,bmi2 = bmi,bmi
    if bmi<18.5:
        wto, dom = "偏瘦", "偏瘦"
    elif 18.5<bmi1<=25:
        wto = '正常'
    elif 25< bmi1 <=30:
        wto = '偏胖'
    elif 30<= bmi1:
        wto = '肥胖'
    if 18.5 < bmi2 <= 24:
        dom = '正常'
    elif 24 < bmi2 <= 28:
        dom = '偏胖'
    elif 28 <= bmi2:
        dom = '肥胖'
    # ********** End ********** #
    # 请不要修改下面的代码
    print("BMI 指标为:国际'{0}', 国内'{1}'".format(wto, dom))
    #print(bmi1,bmi2)
print('\n******************************\n')

# 第二题
# 数据来源列表,每组数据输出一个结果
for salary in [-1000, 0, 40000, 47450, 98000, 114650, 14980, 17470, 25670, 311950, 360000]:
    # 请在下面编写代码
    # ********** Begin ********** #
    if 0<salary<=47449:
        salaTax = salary*0.22
    elif 47450<=salary<=114649:
        salaTax = salary * 0.25
    elif 114650<=salary<=174699:
        salaTax = salary * 0.28
    elif 174700<=salary<=311949:
        salaTax = salary * 0.33
    elif 311950<=salary:
        salaTax = salary * 0.35
    else:
        salaTax = 0

    # ********** End ********** #
    # 请不要修改下面的代码
    print("%.4f" % salaTax)  # 输出个人所得税salaTax
print('\n***********************\n')

# 第三题
# 数据来源列表,每组数据输出一个结果
for (p1, p2) in [('s', 'j'), ('b', 'j'), ('j', 'j'), ('b', 's')]:
    # 请在下面编写代码
    # p1,p2代表玩家1,玩家2,'s','j','b' 分别代表石头、剪刀和布
    # game=-1,0,1分别代表p1输局,平局,赢局
    # ********** Begin ********** #
    if p1 == p2:
        game = 0
    elif p1 == 's' and p2 == 'j':
        game = 1
    elif p1 == 'j' and p2 == 'b':
        game = 1
    elif p1 == 'b' and p2 == 's':
        game = 1
    else:
        game = -1
    # ********** End ********** #
    # 请不要修改下面的代码
    print(game)
print('\n***********************\n')

总结:

很多题目都是思路简单,写起来麻烦,感觉只能用来练习打字》-《

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值