This is a list of some Python libraries mentioned in CS50P 2022.
WEEK 4: Libraries random See Random
Ex.
1 2 3 4 5 6 7 8 9 10 11 12 import randomcoin = random.choice(["heads" , "tails" ]) print (coin)number = random.randint(1 , 10 ) print (number)cards = ["jack" , "queen" , "king" ] random.shuffle(cards) for card in cards: print (card)
statistics See Statistics
Ex.
The mean
function takes a list of values and print the average of these values.
1 2 3 import statisticsprint (statistics.mean([100 , 90 ]))
sys See Command-Line Arguments
cowsay This library generates ascii arts like this:
1 2 3 4 5 6 7 8 9 10 11 12 ___________ < Hello World > =========== \ \ ^__^ (oo)\_______ (__)\ )\/\ ||----w | || ||
See Packages
emoji This library can convert some specified words to emoji. For instance, :thumbsup:
can be converted to 👍.
See emojize
Ex.
1 2 3 4 import emojiwords = input ("Input: " ) print (f"Output: {emoji.emojize(words)} " )
pyfiglet This library can make large letters out of ordinary text:
1 2 3 4 5 _ _ _ _ _ _ | (_) | _____ | |_| |__ (_)___ | | | |/ / _ \ | __| '_ \| / __| | | | < __/ | |_| | | | \__ \ |_|_|_|\_\___| \__|_| |_|_|___/
See Frank, lan and Glen's Letters
inflect This library can correctly generate plurals, singular nouns, ordinals, indefinite articles; convert numbers to words.
See Adieu, Adieu
requests See Bitcoin Price Index
pylint See Style
black See Style
WEEK 5: Unit Tests pytest See Pytest
Ex.1.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 def main (): while True : fraction = input ("Fraction: " ) try : percentage = convert(fraction) break except ValueError: pass except ZeroDivisionError: pass print (gauge(percentage)) def convert (fraction ): x, y = [int (bit) for bit in fraction.split("/" )] if x > y and y != 0 : raise ValueError if y == 0 : raise ZeroDivisionError return int (x / y * 100 ) def gauge (percentage ): if percentage <= 1 : return "E" elif percentage >= 99 : return "F" else : return f"{percentage} %" if __name__ == "__main__" : main()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 from fuel import convert, gaugeimport pytestdef test_covert (): assert convert("0/4" ) == 0 assert convert("1/4" ) == 25 assert convert("3/4" ) == 75 assert convert("4/4" ) == 100 with pytest.raises(ValueError): assert convert("cat/dog" ) assert convert("three/four" ) assert convert("1.5/3" ) assert convert("4/3" ) with pytest.raises(ZeroDivisionError): assert convert("4/0" ) def test_guage (): assert gauge(0 ) == "E" assert gauge(1 ) == "E" assert gauge(25 ) == "25%" assert gauge(99 ) == "F" assert gauge(100 ) == "F"
Ex.2.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 from datetime import dateimport reimport sysimport inflectDATE_REGEXP = r"^(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)$" def main (): date_str = input ("Date of Birth: " ) print (get_ans(date_str)) def get_ans (date_str ): if is_valid_date(date_str): birthday = date.fromisoformat(date_str) else : print ("Invalid date" ) sys.exit(1 ) today = date.today() days = (today - birthday).days p = inflect.engine() return (p.number_to_words(days * 24 * 60 , andword="" )).capitalize() + " minutes" def is_valid_date (s ): return re.search(DATE_REGEXP, s) if __name__ == "__main__" : main()
1 2 3 4 5 6 7 8 9 10 11 from seasons import get_ansimport pytestdef test_correctness (): assert get_ans("2022-07-05" ) == "Five hundred twenty-five thousand, six hundred minutes" assert get_ans("2021-07-05" ) == "One million, fifty-one thousand, two hundred minutes" def test_invalid_input (): with pytest.raises(SystemExit): get_ans("January 1, 1999" )
WEEK 6: File I/O csv See csv
pillow This is a popular Python library that works well with image files.
See Binary Files and PIL
WEEK 7: Regular Expressions re See Notes
WEEK 8: Object-Oriented Programming fpdf2 See CS50 Shirtificate
WEEK 9: Et Cetera mypy See Type Hints
argparse See argparse
pyttsx3 See This was CS50!