最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

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[item]            print(f"Total: ${total:.2f}")    except EOFError:        print()        break

Grocery List

题目描述:

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

题解:

## 存储商品信息list = {}while True:    ## 输入处理    try:        ## upper():字符串大写        item = input("").upper()    except EOFError:        print()        break    ## 记录商品    if item in list:        list[item] += 1    else:        list[item] = 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[0].split()                month = months.index(month)+1                day, year = int(day), int(date[1])        ##输出        if 1<=int(month)<=12 and 1<=int(day)<=31:            print(f"{year:04}-{month:02}-{day:02}")            break    except ValueError:        pass

Week4 Libraries

Emojize

题目描述:

练习python调用库操作;

题解:

from emoji import emojizeprint("Output:", emojize(input("Input: ")))

Frank, Ian and Glen’s Letters

题目描述:

The documentation for pyfiglet isn’t very clear, but you can use the module as follows:

from pyfiglet import Figletfiglet = Figlet()

You can then get a listof available fonts with code like this:

figlet.getFonts()

You can set the font with code like this, wherein fis the font’s name as a str:

figlet.setFont(font=f)

And you can output text in that font with code like this, wherein sis that text as a str:

print(figlet.renderText(s))

题解:

from pyfiglet import Figletimport randomimport sysfonts = Figlet().getFonts()# Zero if the user would like to output text in a random font.# Two if the user would like to output text in a specific font, in which case the first of the two should be -f or --font, and the second of the two should be the name of the font.if len(sys.argv) == 1:    font = random.choice(fonts)elif len(sys.argv) == 3:    if sys.argv[1] in ["-f", "--font"] and sys.argv[2] in fonts:        font = sys.argv[2]    else:        sys.exit("Invalid arguments.")else:    sys.exit("Invalid number of arguments.")## 输出text = input("Input: ")print("Output:\n", Figlet(font=font).renderText(text))

Adieu, Adieu

题目描述:

用户输入名字,将所有名字按照inflect中的操作输出;

题解:

import inflectp = inflect.engine()names = []while True:    try:        names.append(input("Name: ").strip())    except EOFError:        print()        breakprint(f"Adieu, adieu, to {p.join(names)}")

Guessing Game

题目描述:

用户选择猜数等级,然后进行竞猜。竞猜过程中会提示用户信息,直到猜中为止;

题解:

from random import randint## 选择猜数等级while True:    try:        n = int(input("Level: "))        if n < 0:            raise ValueError        break    except ValueError:        pass## 生成竞猜的数rand = randint(1, n)## 用户判断while True:    try:        guess = int(input("Guess: "))        if guess < rand:            print("Too small!")        elif guess > rand:            print("Too large!")        else:            print("Just right!")            break    except ValueError:        pass

Little Professor

题目描述:

用户选择等级进行随机式子生成,最后根据算式正确结果算取所得分数;

题解:

import randomdef main():    level = get_level()    score = 0    for _ in range(10):        x = generate_integer(level)        y = generate_integer(level)        ## 计算score        tries = 0        while tries < 3:            try:                tries += 1                answer = int(input(f"{x} + {y} = "))                if answer == x+y:                    score += 1                    break                else:                    print("EEE")            except ValueError:                pass        print(f"{x} + {y} = {x+y}")    print("Score", score)## 获取等级def get_level():    while True:        try:            level = int(input("Level: "))            if level in [1, 2, 3]:                return level        except ValueError:            pass        ## 在范围内生成数字def generate_integer(level):    if level == 1:        return random.randint(0, 9)    return random.randint(10 ** (level - 1), 10**level - 1)if __name__ == "__main__":    main()

Bitcoin Price Index

题目描述:

Expects the user to specify as a command-line argument the number of Bitcoins n, that they would like to buy. If that argument cannot be converted to a float, the program should exit via sys.exitwith an error message.

Queries the API for the CoinDesk Bitcoin Price Index at https://api.coindesk.com/v1/bpi/currentprice.json, which returns a JSON object, among whose nested keys is the current price of Bitcoin as a float. Be sure to catch any exceptions, as with code like:

import requeststry:    ...except requests.RequestException:    ...

Outputs the current cost of Bitcoins in USD to four decimal places, using ,as a thousands separator.

题解:

import sysimport requeststry:    response = requests.get("https://api.coindesk.com/v1/bpi/currentprice.json")    data = response.json()    current_price = data["bpi"]["USD"]["rate_float"]except requests.RequestException:    sys.exit()try:    n = float(sys.argv[1])except IndexError:    sys.exit("Missing command-line argument")except ValueError:    sys.exit("Command-line argument is not a number")print(f"${n * current_price:,.4f}")

关键词: