【Python】第二次实验

1

# 用Python编写程序,输入一年份,判断该年份是否是闰年并输出结果。
year = int(input("判断闰年,请输入年份:"))
if year % 4 == 0 and year % 100 != 0:
    print(f"{year}是闰年")
elif year % 400 == 0:
    print(f"{year}是闰年")
else:
    print(f"{year}不是闰年")

2

# 我国成人BMI标准为:<=18.4为偏瘦;18.5~23.9为正常;24~27.9为过重;>28为肥胖。
# 根据BMI中国标准编写一个程序,根据用户输入的体重和身高,计算体质指数(BMI),并输出对应体质分类。
# (BMI=体重(kg)/身高的平方(m2))
print("[BMI计算器]")
w = float(input("请输入您的体重(kg):"))
h = float(input("请输入您的身高(m):"))
bmi = w/(h**2)
tz = "偏瘦"
if 18.5 <= bmi < 24:
    tz = "正常"
if 24 <= bmi <= 28:
    tz = "过重"
if bmi > 28:
    tz = "肥胖"
print(f"您的BMI为{bmi},体质为{tz}")

3

# 编写程序实现输入x,y,判断其属于第几象限。
x = float(input("请输入x:"))
y = float(input("请输入y:"))
if x > 0 and y > 0:
    print("点在第一象限")
elif x < 0 and y < 0:
    print("点在第三象限")
elif x < 0 and y > 0:
    print("点在第二象限")
elif x > 0 and y < 0:
    print("点在第四象限")
else:
    print("点在坐标轴上")

4

# 某停车场停车按月租车辆和临时停车两种方式收费,月租车辆每次进出免费;
# 临时停车12分钟内免费,12分钟~1小时收费5元。1小时后每小时按3元收费,不满1小时按1小时计算。
# 输入停车时间(小时),计算停车费用。
# (请使用Python中相应的组合数据类型,自定义并存储月租车辆信息。)

# 月租车辆
monthly_rental_vehicle = ["京A223456"]
vehicle_id = input("车牌号:")
time = 0.0
if vehicle_id in monthly_rental_vehicle:
    print("长租车辆,免费!")
else:
    time = float(input("停车时间(小时,保留1位小数):"))
    if time * 60 < 12:
        print("短暂停车,免费!")
    elif time <= 1:
        print(f"停车费:5元")
    else:
        money_time = 0
        if int(time) == time:
            money_time = time - 1
        else:
            money_time = int(time)
        print(f"停车费:{5 + int(money_time) * 3}")

5

# 某企业开年会,通过座位号进行抽奖。抽奖时先产生两个中奖号码,中奖号码在座位号区间(101~500)产生。
# 如果座位号与中奖号码相同,则为一等奖;如果座位号与幸运号码顺序完全相反,则为二等奖;
# 如果座位号的尾号与幸运号码的尾号相同,则为三等奖。编写程序,实现输入座位号(~101500),输出中将结果。
# (请使用random.randint(x,y) 生成两个随机数,并使用input() 输入座位号。)
import random
bingo = [str(random.randint(101, 500)) for i in range(2)]
tail_char = [i[2] for i in bingo]

seat = input("请输入您的座位号(101-500):")
if 101 <= int(seat) <= 500:
    print(f"中奖号码为:{bingo[0]} {bingo[1]}")
    if seat in bingo:
        print("恭喜您获得一等奖!")
    elif seat[::-1] in bingo:
        print("恭喜您获得二等奖!")
    elif seat[2] in tail_char:
        print("恭喜您获得三等奖!")
    else:
        print("抱歉,您没有中奖!")
else:
    print("座位号错误!")

6

# 编写一个程序,指定一个年龄,让用户猜,如果用户竞猜成功,提示“真厉害!你赢了。”并结束程序;
# 如果竞猜年龄大于指定年龄,提示“大了!”,否则提示“小了!”;
# 如果8次都没有竞猜成功,提示“你输了!”,并结束程序。
target_age = 18
flag = False
for attempts in range(8):
    guess = int(input("请输入你猜测的年龄:"))

    if guess == target_age:
        flag = True
        break
    elif guess > target_age:
        print("大了!")
    else:
        print("小了!")
if flag:
    print("真厉害!你赢了。")
else:
    print("你输了!")

7

# 从1开始依次数数,当数到7时(包括尾数是7的情况)或7的倍数时,则不说出该数,而是拍一下手。
# 绘制流程图并编写程序,计算从1数到99,一共要拍多少次手。
# (string.endswith('7'):判断字符串的尾数是否是7。)
count = 0
for i in range(1, 100):
    if str(i).endswith("7") or i % 7 == 0:
        count += 1
print(f"拍手次数:{count}")

8

# 编写一个程序,输出动态乘法表。通过输入乘法表的起始值和结束值,输出自起始值开始至结束值为止的乘法表。如下图所示。
begin = int(input("请输入乘法表起始值:"))
end = int(input("请输入乘法表结束值:"))
print(f"以下是从{begin}到{end}的乘法表:")
for i in range(begin, end+1):
    for j in range(begin, i+1):
        print(f"{j}*{i}= {i*j}", end=" ")
    print()

9

# 绘制程序流程图,并编程计算1+2+3+...+100的和,并打印计算结果“1+2+3+4+...+99+100=?”。
total = 0
for i in range(1,101):
    total += i
    if i == 1:
        print(i, end="")
    else:
        print(f"+{i}", end="")
print(f"={total}")

10

# 如图所示,打印星号。
# 第一个图像
print("第一个图像")
for i in range(4):
    for j in range(7):
        print("*", end="")
    print()
print()
# 第二个图像
print("第二个图像")
for i in range(4):
    for j in range(2*i+1):
        print("*", end="")
    print()
print()
# 第三个图像
print("第三个图像")
for i in range(4):
    for j in range(4-i-1):
        print(" ", end="")
    for j in range(2*i+1):
        print("*", end="")
    print()
print()
# 第四个图像
print("第四个图像")
for i in range(4):
    for j in range(i):
        print(" ", end="")
    for j in range(2*(4-i)-1):
        print("*", end="")
    print()
print()
# 第五个图像
print("第五个图像")
for i in range(4):
    for j in range(2*i+1):
        print("*", end="")
    print()
for i in range(3):
    for j in range(2*(3-i)-1):
        print("*", end="")
    print()
print()
# 第六个图像
print("第六个图像")
for i in range(4):
    for j in range(4-i-1):
        print(" ", end="")
    for j in range(2*i+1):
        print("*", end="")
    print()
for i in range(3):
    for j in range(i+1):
        print(" ", end="")
    for j in range(2*(3-i)-1):
        print("*", end="")
    print()
print()

实验总结

在第四题中有一个小问题,就是分段计算停车费,如何在不足一小时的情况下按一小时收费:最初我使用了将时间转换为字符串然后使用split(".")方法进行区分,如果分割出来的第二个元素不为空(小数点后有内容),则说明计费时长就是第一个元素转化为int类型+1,但是由于float转换为字符串,整数的情况下分割后的第二个元素是会有"000000"的,所以这种方法不如现在我提交的方法好用。现在的方法是将float的时间转换为int,判断是否与之前相等,如果不相等,则超过1小时后的计费时长就为int(time),如果相等,则超过1小时后的计费时长就为time-1(因为前一个小时的计费在最后直接+5了)

© 版权声明
THE END
点赞5 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容