CS50-Python实验3,4

打印 上一主题 下一主题

主题 552|帖子 552|积分 1656

Week3 Exceptions

Fuel Gauge

题目描述:

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

1,从字符串中取出x,y;
2,按题中要求计算输出;
题解:
  1. while True:
  2.     try:
  3.         ## 取出x,y
  4.         x, z, y= input("Fraction: ")
  5.         x, y = int(x), int (y)
  6.         
  7.         ##防止出错
  8.         if y == 0:
  9.             raise ZeroDivisionError
  10.         if x > y:
  11.             raise ValueError
  12.         break
  13.     except(ValueError, ZeroDivisionError):
  14.         pass
  15. ## 模拟题
  16. if 0 < x/y < 0.99:
  17.     print(f"{round(x/y*100)}%")
  18. elif x/y >= 0.99:
  19.     print("F")
  20. else:
  21.     print("E")
复制代码
Felipe’s Taqueria

题目描述:

根据用户输入的信息,匹配菜单价格,最终算出最终价格。
题解:
  1. ## 菜单信息
  2. menu = {
  3.     "Baja Taco": 4.00,
  4.     "Burrito": 7.50,
  5.     "Bowl": 8.50,
  6.     "Nachos": 11.00,
  7.     "Quesadilla": 8.50,
  8.     "Super Burrito": 8.50,
  9.     "Super Quesadilla": 9.50,
  10.     "Taco": 3.00,
  11.     "Tortilla Salad": 8.00,
  12. }
  13. ##total:结果
  14. total = 0
  15. ## 计算输出
  16. while True:
  17.     try:
  18.         ## title(): 首字母大写其余小写
  19.         item = input("Item: ").title()
  20.         if item in menu:
  21.             total += menu[item]
  22.             print(f"Total: ${total:.2f}")
  23.     except EOFError:
  24.         print()
  25.         break
复制代码
Grocery List

题目描述:

记录用户输入商品,最终输出已输入的商品以及商品数量;
题解:
  1. ## 存储商品信息
  2. list = {}
  3. while True:
  4.     ## 输入处理
  5.     try:
  6.         ## upper():字符串大写
  7.         item = input("").upper()
  8.     except EOFError:
  9.         print()
  10.         break
  11.        
  12.     ## 记录商品
  13.     if item in list:
  14.         list[item] += 1
  15.     else:
  16.         list[item] = 1
  17. ## 输出结果
  18. for item, cnt in sorted(list.items()):
  19.     print(f"{cnt} {item}")
复制代码
Outdated

题目描述:

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

[code]## 月份记录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[0].split()                month = months.index(month)+1                day, year = int(day), int(date[1])        ##输出        if 1
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

麻花痒

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表