塘小鸭 发表于 2023-4-5 23:42:32

CS50-Python实验3,4

Week3 Exceptions

Fuel Gauge

题目描述:

输入分数字符串,判断并输出相应的百分数;特例不足1%输出E,超出99%输出F
思路:

1,从字符串中取出x,y;
2,按题中要求计算输出;
题解:

while True:
    try:
      ## 取出x,y
      x, z, y= input("Fraction: ")
      x, y = int(x), int (y)
      
      ##防止出错
      if y == 0:
            raise ZeroDivisionError
      if x > y:
            raise ValueError
      break
    except(ValueError, ZeroDivisionError):
      pass

## 模拟题
if 0 < x/y < 0.99:
    print(f"{round(x/y*100)}%")
elif x/y >= 0.99:
    print("F")
else:
    print("E")Felipe’s Taqueria

题目描述:

根据用户输入的信息,匹配菜单价格,最终算出最终价格。
题解:

## 菜单信息
menu = {
    "Baja Taco": 4.00,
    "Burrito": 7.50,
    "Bowl": 8.50,
    "Nachos": 11.00,
    "Quesadilla": 8.50,
    "Super Burrito": 8.50,
    "Super Quesadilla": 9.50,
    "Taco": 3.00,
    "Tortilla Salad": 8.00,
}

##total:结果
total = 0

## 计算输出
while True:
    try:
      ## title(): 首字母大写其余小写
      item = input("Item: ").title()
      if item in menu:
            total += menu
            print(f"Total: ${total:.2f}")
    except EOFError:
      print()
      breakGrocery List

题目描述:

记录用户输入商品,最终输出已输入的商品以及商品数量;
题解:

## 存储商品信息
list = {}


while True:
    ## 输入处理
    try:
      ## upper():字符串大写
      item = input("").upper()
    except EOFError:
      print()
      break
       
    ## 记录商品
    if item in list:
      list += 1
    else:
      list = 1

## 输出结果
for item, cnt in sorted(list.items()):
    print(f"{cnt} {item}")Outdated

题目描述:

用户输入9/8/1636,September 8, 1636形式,系统转换输出1636-09-08;若用户输出其他形式抛异常。
题解:

## 月份记录months = [    "January",    "February",    "March",    "April",    "May",    "June",    "July",    "August",    "September",    "October",    "November",    "December"]##思路:分情况讨论while True:    date = input("Date: ")    month,day,year = "", "", ""    try:      ## 9/8/1636      if len(date.split("/")) == 3:             date = date.split("/")            month, day, year = map(int, date)      ## September 8, 1636      else:            date = date.split(",")            if len(date) == 2:                month, day = date.split()                month = months.index(month)+1                day, year = int(day), int(date)      ##输出      if 1
页: [1]
查看完整版本: CS50-Python实验3,4