笨办法学python

–20190307
之前开始学习python过多次,每次都以失败告终。其实我有计算机语言的基础,高中时在步步高词典上是basic写过小程序,大学时自学C。不过学C的时候不得要领,深究基础语法和考试,最终只是得到个考试高分。现在多年不动,许多计算机语言的细节早忘光了。

这样也好,这次重新开始,当作小白一样。据此,我选了一本《笨办法学python3》做教材。这本书包含53个练习和一个附录,以输入代码、运行、调试等练习的形式学习python。看似很笨,其实实战是学习计算机语言最好的办法。我以前学习的教训就是没有多敲代码多做项目。包括现在工作也有这个体会:写脚本经常需要调试,有时候还需要写个小样本测试。计算机语言就是解决解决问题的,光靠看或者想是不行的。要多敲键盘。

计划是每天至少完成一个练习。要做点笔记,最好多写点东西,记录成博客,方便以后查阅和别人参考。

昨天学习了“习题 0”,主要是部署练习环境:安装python,选一个趁手的文本编辑器。这章练习提到了要熟悉linux 的bash(或者mac 的terminal 或者windows 的powershell),今后要在其下运行脚本。作者贴心的为部署操作的读者准备了附录——终端快速上手练习指南。我对命令行很熟悉了,不过还是看了下。挺开心学到两个新命令popd和pushd。忽然感觉自己还要学的东西很多。

在附录和第0章作者提到许多建议,我很赞同。

尤其是关于记忆、学习方面的。记忆是学习过程中必不可少的环节,好的记忆可以帮助学习,高效的学习离不开记忆。当你熟记的内容越多,理解高深的知识越容易,不然基础概念都会阻拦你。这里的熟记不全是死记硬背:有些知识是具有原子性的,这些就是死记硬背也要记住;有些知识是多个点组成的,这就既要理解又要记住。

另外,不是记得越多越好,什么都要记忆。人的精力是有限的,知识无限的。高级的知识往往了解推导过程,理解原理更重要——有限的精力应该放在应用上,而不是记忆把玩。记忆、学习都是中间态,应用才是目的。

如何不再忘记——复习本书有感

–20191110

前段时间备考没看python,今天发现《笨办法学python》这本书就像没看过似的。尤其里面字符串、函数传参等基础内容都忘记了。

心里真是害怕,回想shell脚本也是这样,前两天写if语句都写错了。

不是害怕忘记所有知识,但作为一项技能,python和shell一些基本的要能上手就来。一些细节可以使用时查看手册。

那如何做到不再忘记?想起《精通正则表达式》一书前言里作者说的。我反思认为:1,对技术热忱,理解原理,不停留表面。2,学习时反复练习,多角度实践。3,学后不断使用,定时复习。

学习时要多角度琢磨,善于总结。总结要导图、笔记、感想多方位。学后要勤于应用,刻意应用,刻意练习。暂时用不到的,要隔段时间翻出来把玩,建立知识连接,寻找应用途径。

《笨办法学python》代码

–20191110

将书上的代码整理在下面,一是学习的痕迹,二是方便今后快速回顾。练习过一遍(或两三遍)后,再逐个字录入练习就有点浪费时间了。所以这些代码也方便那些不想打字的人。

--exercise 01
print("Hello World!")
print("Hello Again")
print("I like typing this.")
print("This is fun.")
print('Yay! Printing.')
print("I'd much rather you 'not'.")
print('I "said" do not touch this.')--exercise 02
# A comment, this is so you can read your program later.
# Anything after the # is ignored by python.print("I could have code like this.") # and the comment after is ignored# You can also use a comment to "disable" or comment out code:
# print("This won't run.")print("This will run.")--exercise 03
print("I will now count my chickens:")print("Hens", 25 + 30 / 6)
print("Roosters", 100 - 25 * 3 % 4)print("Now I will count the eggs:")print(3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6)print("Is it true that 3 + 2 < 5 - 7?")print(3 + 2 < 5 - 7)print("What is 3 + 2?", 3 + 2)
print("What is 5 - 7?", 5 - 7)print("Oh, that's why it's False.")print("How about some more.")print("Is it greater?", 5 > -2)
print("Is it greater or equal?", 5 >= -2)
print("Is it less or equal?", 5 <= -2)--exercise 04
cars = 100
space_in_a_car = 4.0
drivers = 30
passengers = 90
cars_not_driven = cars - drivers
cars_driven = drivers
carpool_capacity = cars_driven * space_in_a_car
average_passengers_per_car = passengers / cars_drivenprint("There are", cars, "cars available.")
print("There are only", drivers, "drivers available.")
print("There will be", cars_not_driven, "empty cars today.")
print("We can transport", carpool_capacity, "people today.")
print("We have", passengers, "to carpool today.")
print("We need to put about", average_passengers_per_car,
"in each car.")--exercise 05
my_name = 'Zed A. Shaw'
my_age = 35 # not a lie
my_height = 74 # inches
my_weight = 180 # lbs
my_eyes = 'Blue'
my_teeth = 'White'
my_hair = 'Brown'print(f"Let's talk about {my_name}.")
print(f"He's {my_height} inches tall.")
print(f"He's {my_weight} pounds heavy.")
print("Actually that's not too heavy.")
print(f"He's got {my_eyes} eyes and {my_hair} hair.")
print(f"His teeth are usually {my_teeth} depending on the coffee.")# this line is tricky, try to get it exactly right
total = my_age + my_height + my_weight
print(f"If I add {my_age}, {my_height}, and {my_weight} I get {total}.")--exercise 06
types_of_people = 10
x = f"There are {types_of_people} types of people."binary = "binary"
do_not = "don't"
y = f"Those who know {binary} and those who {do_not}."print(x)
print(y)print(f"I said: {x}")
print(f"I also said: '{y}'")hilarious = False
joke_evaluation = "Isn't that joke so funny?! {}"print(joke_evaluation.format(hilarious))w = "This is the left side of..."
e = "a string with a right side."print(w + e)--exercise 07
print("Mary had a little lamb.")
print("Its fleece was white as {}.".format('snow'))
print("And everywhere that Mary went.")
print("." * 10) # what'd that do?end1 = "C"
end2 = "h"
end3 = "e"
end4 = "e"
end5 = "s"
end6 = "e"
end7 = "B"
end8 = "u"
end9 = "r"
end10 = "g"
end11 = "e"
end12 = "r"# watch end = ' ' at the end. try removing it to see what happens
print(end1 + end2 + end3 + end4 + end5 + end6, end=' ')
print(end7 + end8 + end9 + end10 + end11 + end12)--exercise 08
formatter = "{} {} {} {}"print(formatter.format(1, 2, 3, 4))
print(formatter.format("one", "two", "three", "four"))
print(formatter.format(True, False, False, True))
print(formatter.format(formatter, formatter, formatter, formatter))
print(formatter.format(
"Try your",
"Own text here",
"Maybe a poem",
"Or a song about fear"
))--exercise 09
# Here's some new strange stuff, remember type it exactly.days = "Mon Tue Wed Thu Fri Sat Sun"
months = "Jan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug"print("Here are the days: ", days)
print("Here are the months: ", months)print("""
There's something going on here.
With the three double-quotes.
We'll be able to type as much as we like.
Even 4 lines if we want, or 5, or 6.
""")--exercise 10
tabby_cat = "\tI'm tabbed in."
persian_cat = "I'm split\non a line."
backslash_cat = "I'm \\ a \\ cat."fat_cat = """
I'll do a list:
\t* Cat food
\t* Fishies
\t* Catnip\n\t* Grass
"""print(tabby_cat)
print(persian_cat)
print(backslash_cat)
print(fat_cat)--exercise 11
print("How old are you?", end=' ')
age = input()
print("How tall are you?", end=' ')
height = input()
print("How much do you weigh?", end=' ')
weight = input()print(f"So, you're {age} old, {height} tall and {weight} heavy.")--exercise 12
age = input("How old are you? ")
height = input("How tall are you? ")
weight = input("How much do you weigh? ")print(f"So, you're {age} old, {height} tall and {weight} heavy.")--exercise 13
from sys import argv
# read the WYSS section for how to run this
script, first, second, third = argvprint("The script is called:", script)
print("Your first variable is:", first)
print("Your second variable is:", second)
print("Your third variable is:", third)也可以写成:
import sys
script, first, second, third = sys.argvprint("The script is called:", script)
print("Your first variable is:", first)
print("Your second variable is:", second)
print("Your third variable is:", third)还可以写成:
import sys
script, first, second, third = argvprint("The script is called:",    sys.argv[0])
print("Your first variable is:",  sys.argv[1])
print("Your second variable is:", sys.argv[2])
print("Your third variable is:",  sys.argv[3])--exercise 14
from sys import argvscript, user_name = argv
prompt = '> 'print(f"Hi {user_name}, I'm the {script} script.")
print("I'd like to ask you a few questions.")
print(f"Do you like me {user_name}?")
likes = input(prompt)print(f"Where do you live {user_name}?")
lives = input(prompt)print("What kind of computer do you have?")
computer = input(prompt)print(f"""
Alright, so you said {likes} about liking me.
You live in {lives}. Not sure where that is.
And you have a {computer} computer. Nice.
""")--exercise 15
from sys import argvscript, filename = argvtxt = open(filename)print(f"Here's your file {filename}:")
print(txt.read())print("Type the filename again:")
file_again = input("> ")txt_again = open(file_again)print(txt_again.read())--exercise 16
from sys import argvscript, filename = argvprint(f"We're going to erase {filename}.")
print("If you don't want that, hit CTRL-C (^C).")
print("If you do want that, hit RETURN.")input("?")print("Opening the file...")
target = open(filename, 'w')print("Truncating the file. Goodbye!")
target.truncate()print("Now I'm going to ask you for three lines.")line1 = input("line 1: ")
line2 = input("line 2: ")
line3 = input("line 3: ")print("I'm going to write these to the file.")target.write(line1)
target.write("\n")
target.write(line2)
target.write("\n")
target.write(line3)
target.write("\n")print("And finally, we close it.")
target.close()--exercise 17
from sys import argv
from os.path import existsscript, from_file, to_file = argvprint(f"Copying from {from_file} to {to_file}")# we could do these two on one line, how?
in_file = open(from_file)
indata = in_file.read()print(f"The input file is {len(indata)} bytes long")print(f"Does the output file exist? {exists(to_file)}")
print("Ready, hit RETURN to continue, CTRL-C to abort.")
input()out_file = open(to_file, 'w')
out_file.write(indata)print("Alright, all done.")out_file.close()
in_file.close()--exercise 18
# this one is like your scripts with argv
def print_two(*args):arg1, arg2 = argsprint(f"arg1: {arg1}, arg2: {arg2}")# ok, that *args is actually pointless, we can just do this
def print_two_again(arg1, arg2):print(f"arg1: {arg1}, arg2: {arg2}")# this just takes one argument
def print_one(arg1):print(f"arg1: {arg1}")# this one takes no arguments
def print_none():print("I got nothin'.")print_two("Zed","Shaw")
print_two_again("Zed","Shaw")
print_one("First!")
print_none()--exercise 19
def cheese_and_crackers(cheese_count, boxes_of_crackers):print(f"You have {cheese_count} cheeses!")print(f"You have {boxes_of_crackers} boxes of crackers!")print("Man that's enough for a party!")print("Get a blanket.\n")print("We can just give the function numbers directly:")
cheese_and_crackers(20, 30)print("OR, we can use variables from our script:")
amount_of_cheese = 10
amount_of_crackers = 50cheese_and_crackers(amount_of_cheese, amount_of_crackers)print("We can even do math inside too:")
cheese_and_crackers(10 + 20, 5 + 6)print("And we can combine the two, variables and math:")
cheese_and_crackers(amount_of_cheese + 100, amount_of_crackers + 1000)--exercise 20
from sys import argvscript, input_file = argvdef print_all(f):print(f.read())def rewind(f):f.seek(0)def print_a_line(line_count, f):print(line_count, f.readline())current_file = open(input_file)print("First let's print the whole file:\n")print_all(current_file)print("Now let's rewind, kind of like a tape.")rewind(current_file)print("Let's print three lines:")current_line = 1
print_a_line(current_line, current_file)current_line = current_line + 1
print_a_line(current_line, current_file)current_line = current_line + 1
print_a_line(current_line, current_file)--exercise 21
def add(a, b):print(f"ADDING {a} + {b}")return a + bdef subtract(a, b):print(f"SUBTRACTING {a} - {b}")return a - bdef multiply(a, b):print(f"MULTIPLYING {a} * {b}")return a * bdef divide(a, b):print(f"DIVIDING {a} / {b}")return a / bprint("Let's do some math with just functions!")age = add(30, 5)
height = subtract(78, 4)
weight = multiply(90, 2)
iq = divide(100, 2)print(f"Age: {age}, Height: {height}, Weight: {weight}, IQ: {iq}")# A puzzle for the extra credit, type it in anyway.
print("Here is a puzzle.")what = add(age, subtract(height, multiply(weight, divide(iq, 2))))print("That becomes: ", what, "Can you do it by hand?")--exercise 23
import sys
script, input_encoding, error = sys.argvdef main(language_file, encoding, errors):line = language_file.readline()if line:print_line(line, encoding, errors)return main(language_file, encoding, errors)def print_line(line, encoding, errors):next_lang = line.strip()raw_bytes = next_lang.encode(encoding, errors=errors)cooked_string = raw_bytes.decode(encoding, errors=errors) #这句可以换成 cooked_string = next_langprint(raw_bytes, "<===>", cooked_string)languages = open("languages.txt", encoding="utf-8")main(languages, input_encoding, error)以下是languages.txt的内容:
Afrikaans
አማርኛ
Аҧсшәа
العربية
Aragonés
Arpetan
Azərbaycanca
Bamanankan
বাংলা
Bân-lâm-gú
Беларуская
Български
Boarisch
Bosanski
Буряад
Català
Чӑвашла
Čeština
Cymraeg
Dansk
Deutsch
Eesti
Ελληνικά
Español
Esperanto
فارسی
Français
Frysk
Gaelg
Gàidhlig
Galego
한국어
Հայերեն
हिन्दी
Hrvatski
Ido
Interlingua
Italiano
עברית
ಕನ್ನಡ
Kapampangan
ქართული
Қазақша
Kreyòl ayisyen
Latgaļu
Latina
Latviešu
Lëtzebuergesch
Lietuvių
Magyar
Македонски
Malti
मराठी
მარგალური
مازِرونی
Bahasa Melayu
Монгол
Nederlands
नेपाल भाषा
日本語
Norsk bokmål
Nouormand
Occitan
Oʻzbekcha/ўзбекча
ਪੰਜਾਬੀ
پنجابی
پښتو
Plattdüütsch
Polski
Português
Română
Romani
Русский
Seeltersk
Shqip
Simple English
Slovenčina
کوردیی ناوەندی
Српски / srpski
Suomi
Svenska
Tagalog
தமிழ்
ภาษาไทย
Taqbaylit
Татарча/tatarça
తెలుగు
Тоҷикӣ
Türkçe
Українська
اردو
Tiếng Việt
Võro
文言
吴语
ייִדיש
中文以下是这篇学习心得 编码/解码:在Python中,它们表示为:
b'haha'  # 字节字符串
'haha'  # 字符串字符串是字符序列,它是一种抽象的概念,不能直接存储在硬盘;字节字符串是字节序列,它可以直接存储在硬盘。它们之间的映射被称为编码/解码。在Python中,程序中的文本都用字符串表示。(所以你在读取文件时,需要把字节序列解码成utf-8字符串;你在写入文件时,需要把utf-8字符串编码成字节序列。)--exercise 24
print("Let's practice everything.")
print('You\'d need to know \'bout escapes with \\ that do:')
print('\n newlines and \t tabs.')poem = """
\tThe lovely world
with logic so firmly planted
cannot discern \n the needs of love
nor comprehend passion from intuition
and requires an explanation
\n\t\twhere there is none.
"""print("--------------")
print(poem)
print("--------------")five = 10 - 2 + 3 - 6
print(f"This should be five: {five}")def secret_formula(started):jelly_beans = started * 500jars = jelly_beans / 1000crates = jars / 100return jelly_beans, jars, cratesstart_point = 10000
beans, jars, crates = secret_formula(start_point)# remember that this is another way to format a string
print("With a starting point of: {}".format(start_point))
# it's just like with an f"" string
print(f"We'd have {beans} beans, {jars} jars, and {crates} crates.")start_point = start_point / 10print("We can also do that this way:")
formula = secret_formula(start_point)
# this is an easy way to apply a list to a format string
print("We'd have {} beans, {} jars, and {} crates.".format(*formula))--exercise 25
def break_words(stuff):"""This function will break up words for us."""words = stuff.split(' ')return wordsdef sort_words(words):"""Sorts the words."""return sorted(words)def print_first_word(words):"""Prints the first word after popping it off."""word = words.pop(0)print(word)def print_last_word(words):"""Prints the last word after popping it off."""word = words.pop(-1)print(word)def sort_sentence(sentence):"""Takes in a full sentence and returns the sorted words."""words = break_words(sentence)return sort_words(words)def print_first_and_last(sentence):"""Prints the first and last words of the sentence."""words = break_words(sentence)print_first_word(words)print_last_word(words)def print_first_and_last_sorted(sentence):"""Sorts the words then prints the first and last one."""words = sort_sentence(sentence)print_first_word(words)print_last_word(words)该练习调用上面的模块,然后在解释器里输入下面内容:import ex25 #加载模块,ex25是模块名,即上面代码保存的ex25.py 文件
sentence = "All good things come to those who wait."
words = ex25.break_words(sentence)
words   #与print(words) 效果一样
sorted_words = ex25.sort_words(words)
sorted_words
ex25.print_first_word(words)
ex25.print_last_word(words)
words
ex25.print_first_word(sorted_words)
ex25.print_last_word(sorted_words)
sorted_words
sorted_words = ex25.sort_sentence(sentence)
sorted_words
ex25.print_first_and_last(sentence)
ex25.print_first_and_last_sorted(sentence)--exercise 26
from sys import argvprint("How old are you?", end=' ')
age = input()
print("How tall are you?", end=' ')
height = input()
print("How much do you weigh?", end=' ')
weight = input()print(f"So, you're {age} old, {height} tall and {weight} heavy.")script, filename = argvtxt = open(filename)print("Here's your file {filename}:")
print(txt.read())print("Type the filename again:")
file_again = input("> ")txt_again = open(file_again)print(txt_again.read())print('Let\'s practice everything.')
print('''You\'d need to know \'bout escapes with \\ that do \n newlines and \t tabs.''')poem = """
\tThe lovely world
with logic so firmly planted
cannot discern \n the needs of love
nor comprehend passion from intuition
and requires an explanation
\n\t\twhere there is none.
"""print("--------------")
print(poem)
print("--------------")five = 10 - 2 + 3 - 6
print(f"This should be five: {five}")def secret_formula(started):jelly_beans = started * 500jars = jelly_beans / 1000crates = jars / 100return jelly_beans, jars, cratesstart_point = 10000
beans, jars, crates = secret_formula(start_point)# remember that this is another way to format a string
print("With a starting point of: {}".format(start_point))
# it's just like with an f"" string
print(f"We'd have {beans} beans, {jars} jars, and {crates} crates.")start_point = start_point / 10print("We can also do that this way:")
formula = secret_formula(start_point)
# this is an easy way to apply a list to a format string
print("We'd have {} beans, {} jars, and {} crates.".format(*formula))people = 20
cats = 30
dogs = 15if people < cats:print("Too many cats! The world is doomed!")if people > cats:print("Not many cats! The world is saved!")if people < dogs:print("The world is drooled on!")if people > dogs:print("The world is dry!")dogs += 5if people >= dogs:print("People are greater than or equal to dogs.")if people <= dogs:print("People are less than or equal to dogs.")if people == dogs:print("People are dogs.")以上完成python的大部分内容,下半部分是逻辑和流程。--exercise 27 28 无代码
--exercise 29
people = 20
cats = 30
dogs = 15if people < cats:print("Too many cats! The world is doomed!")if people > cats:print("Not many cats! The world is saved!")if people < dogs:print("The world is drooled on!")if people > dogs:print("The world is dry!")dogs += 5if people >= dogs:print("People are greater than or equal to dogs.")if people <= dogs:print("People are less than or equal to dogs.")if people == dogs:print("People are dogs.")--exercise 30
people = 30
cars = 40
trucks = 15if cars > people:print("We should take the cars.")
elif cars < people:print("We should not take the cars.")
else:print("We can't decide.")if trucks > cars:print("That's too many trucks.")
elif trucks < cars:print("Maybe we could take the trucks.")
else:print("We still can't decide.")if people > trucks:print("Alright, let's just take the trucks.")
else:print("Fine, let's stay home then.")--exercise 31
print("""You enter a dark room with two doors.
Do you go through door #1 or door #2?""")door = input("> ")if door == "1":print("There's a giant bear here eating a cheese cake.")print("What do you do?")print("1. Take the cake.")print("2. Scream at the bear.")bear = input("> ")if bear == "1":print("The bear eats your face off. Good job!")elif bear == "2":print("The bear eats your legs off. Good job!")else:print(f"Well, doing {bear} is probably better.")print("Bear runs away.")elif door == "2":print("You stare into the endless abyss at Cthulhu's retina.")print("1. Blueberries.")print("2. Yellow jacket clothespins.")print("3. Understanding revolvers yelling melodies.")insanity = input("> ")if insanity == "1" or insanity == "2":print("Your body survives powered by a mind of jello.")print("Good job!")else:print("The insanity rots your eyes into a pool of muck.")print("Good job!")else:print("You stumble around and fall on a knife and die. Good job!")--exercise 32
the_count = [1, 2, 3, 4, 5]
fruits = ['apples', 'oranges', 'pears', 'apricots']
change = [1, 'pennies', 2, 'dimes', 3, 'quarters']# this first kind of for-loop goes through a list
for number in the_count:print(f"This is count {number}")# same as above
for fruit in fruits:print(f"A fruit of type: {fruit}")# also we can go through mixed lists too
# notice we have to use {} since we don't know what's in it
for i in change:print(f"I got {i}")# we can also build lists, first start with an empty one
elements = []# then use the range function to do 0 to 5 counts
for i in range(0, 6):print(f"Adding {i} to the list.")
# append is a function that lists understandelements.append(i)# now we can print them out too
for i in elements:print(f"Element was: {i}")--exercise 33
i = 0
numbers = []while i < 6:print(f"At the top i is {i}")numbers.append(i)i = i + 1print("Numbers now: ", numbers)print(f"At the bottom i is {i}")print("The numbers: ")for num in numbers:print(num)思考题,改成函数:
def w(n):i = 0numbers = []while i < n:print(f"At the top i is {i}")numbers.append(i)i = i + 1print("Numbers now: ", numbers)print(f"At the bottom i is {i}")return numbersnew_numbers = w(int(input("input a number>")))print("The numbers: ")for num in new_numbers:print(num)--exercise 34 无代码
--exercise 35
from sys import exitdef gold_room():print("This room is full of gold. How much do you take?")choice = input("> ")if "0" in choice or "1" in choice:how_much = int(choice)else:dead("Man, learn to type a number.")if how_much < 50:print("Nice, you're not greedy, you win!")exit(0)else:dead("You greedy bastard!")def bear_room():print("There is a bear here.")print("The bear has a bunch of honey.")print("The fat bear is in front of another door.")print("How are you going to move the bear?")bear_moved = Falsewhile True:choice = input("> ")if choice == "take honey":dead("The bear looks at you then slaps your face off.")elif choice == "taunt bear" and not bear_moved:print("The bear has moved from the door.")print("You can go through it now.")bear_moved = Trueelif choice == "taunt bear" and bear_moved:dead("The bear gets pissed off and chews your leg off.")elif choice == "open door" and bear_moved:gold_room()else:print("I got no idea what that means.")def cthulhu_room():print("Here you see the great evil Cthulhu.")print("He, it, whatever stares at you and you go insane.")print("Do you flee for your life or eat your head?")choice = input("> ")if "flee" in choice:start()elif "head" in choice:dead("Well that was tasty!")else:cthulhu_room()def dead(why):print(why, "Good job!")exit(0)def start():print("You are in a dark room.")print("There is a door to your right and left.")print("Which one do you take?")choice = input("> ")if choice == "left":bear_room()elif choice == "right":cthulhu_room()else:dead("You stumble around the room until you starve.")start()--exercise 36 37 无代码
--exercise 38
ten_things = "Apples Oranges Crows Telephone Light Sugar"print("Wait there are not 10 things in that list. Let's fix that.")stuff = ten_things.split(' ')
more_stuff = ["Day", "Night", "Song", "Frisbee","Corn", "Banana", "Girl", "Boy"]while len(stuff) != 10:next_one = more_stuff.pop()print("Adding: ", next_one)stuff.append(next_one)print(f"There are {len(stuff)} items now.")print("There we go: ", stuff)print("Let's do some things with stuff.")print(stuff[1])
print(stuff[-1]) # whoa! fancy
print(stuff.pop())
print(' '.join(stuff)) # what? cool!
print('#'.join(stuff[3:5])) # super stellar!--exercise 39
# create a mapping of state to abbreviation
states = {'Oregon': 'OR','Florida': 'FL','California': 'CA','New York': 'NY','Michigan': 'MI'
}# create a basic set of states and some cities in them
cities = {'CA': 'San Francisco','MI': 'Detroit','FL': 'Jacksonville'
}# add some more cities
cities['NY'] = 'New York'
cities['OR'] = 'Portland'# print out some cities
print('-' * 10)
print("NY State has: ", cities['NY'])
print("OR State has: ", cities['OR'])# print some states
print('-' * 10)
print("Michigan's abbreviation is: ", states['Michigan'])
print("Florida's abbreviation is: ", states['Florida'])# do it by using the state then cities dict
print('-' * 10)
print("Michigan has: ", cities[states['Michigan']])
print("Florida has: ", cities[states['Florida']])# print every state abbreviation
print('-' * 10)
for state, abbrev in list(states.items()):print(f"{state} is abbreviated {abbrev}")# print every city in state
print('-' * 10)
for abbrev, city in list(cities.items()):print(f"{abbrev} has the city {city}")# now do both at the same time
print('-' * 10)
for state, abbrev in list(states.items()):print(f"{state} state is abbreviated {abbrev}")print(f"and has city {cities[abbrev]}")print('-' * 10)
# safely get a abbreviation by state that might not be there
state = states.get('Texas')if not state:print("Sorry, no Texas.")# get a city with a default value
city = cities.get('TX', 'Does Not Exist')
print(f"The city for the state 'TX' is: {city}")--exercise 40
class Song(object):def __init__(self, lyrics):self.lyrics = lyricsdef sing_me_a_song(self):for line in self.lyrics:print(line)happy_bday = Song(["Happy birthday to you","I don't want to get sued","So I'll stop right there"])bulls_on_parade = Song(["They rally around tha family","With pockets full of shells"])happy_bday.sing_me_a_song()bulls_on_parade.sing_me_a_song()--exercise 41
import random
from urllib.request import urlopen
import sysWORD_URL = "http://learncodethehardway.org/words.txt"
WORDS = []PHRASES = {"class %%%(%%%):":"Make a class named %%% that is-a %%%.","class %%%(object):\n\tdef __init__(self, ***)" :"class %%% has-a __init__ that takes self and *** params.","class %%%(object):\n\tdef ***(self, @@@)":"class %%% has-a function *** that takes self and @@@ params.","*** = %%%()":"Set *** to an instance of class %%%.","***.***(@@@)":"From *** get the *** function, call it with params self, @@@.","***.*** = '***'":"From *** get the *** attribute and set it to '***'."
}# do they want to drill phrases first
if len(sys.argv) == 2 and sys.argv[1] == "english":PHRASE_FIRST = True
else:PHRASE_FIRST = False# load up the words from the website
for word in urlopen(WORD_URL).readlines():WORDS.append(str(word.strip(), encoding="utf-8"))def convert(snippet, phrase):class_names = [w.capitalize() for w inrandom.sample(WORDS, snippet.count("%%%"))]other_names = random.sample(WORDS, snippet.count("***"))results = []param_names = []for i in range(0, snippet.count("@@@")):param_count = random.randint(1,3)param_names.append(', '.join(random.sample(WORDS, param_count)))for sentence in snippet, phrase:result = sentence[:]# fake class namesfor word in class_names:result = result.replace("%%%", word, 1)# fake other namesfor word in other_names:result = result.replace("***", word, 1)# fake parameter listsfor word in param_names:result = result.replace("@@@", word, 1)results.append(result)return results# keep going until they hit CTRL-D
try:while True:snippets = list(PHRASES.keys())random.shuffle(snippets)for snippet in snippets:phrase = PHRASES[snippet]question, answer = convert(snippet, phrase)if PHRASE_FIRST:question, answer = answer, questionprint(question)input("> ")print(f"ANSWER: {answer}\n\n")
except EOFError:print("\nBye")--exercise 42
## Animal is-a object (yes, sort of confusing) look at the extra credit
class Animal(object):pass## ??
class Dog(Animal):def __init__(self, name):
## ??self.name = name## ??
class Cat(Animal):def __init__(self, name):
## ??self.name = name## ??
class Person(object):def __init__(self, name):
## ??self.name = name## Person has-a pet of some kindself.pet = None## ??
class Employee(Person):def __init__(self, name, salary):
## ?? hmm what is this strange magic?super(Employee, self).__init__(name)
## ??self.salary = salary## ??
class Fish(object):pass## ??
class Salmon(Fish):pass## ??
class Halibut(Fish):pass## rover is-a Dog
rover = Dog("Rover")## ??
satan = Cat("Satan")## ??
mary = Person("Mary")## ??
mary.pet = satan## ??
frank = Employee("Frank", 120000)## ??
frank.pet = rover## ??
flipper = Fish()## ??
crouse = Salmon()## ??
harry = Halibut()

笨办法学python__学习笔记相关推荐

  1. 笨办法学Python——学习笔记1

        最近想学gtk,但是gtk在window上编译和运行挺慢的,于是搜索了一下发现了pygtk.在前几天 把环境都配好了,现在想同时学gtk和pygtk,但Python没学过,找到了<笨办法 ...

  2. 笨办法学python3 学习笔记 习题43 基本的面向对象分析和设计

    习题43 基本的面向对象分析和设计 通过面向对象编程(OOP)构建一些东西的流程(常用)(自顶向下) 把要解决的问题写下来,或者画出来. 将第一条中的关键概念提取出来并加以研究. 创建一个类层次结构和 ...

  3. 笨办法学python3 学习笔记 习题20-21

    习题二十 会话 # 从sys包中导入argv模块 from sys import argv# 将argv解包 script, input_file = argv# 定义print_all()函数,该函 ...

  4. 《笨办法学》 学习笔记一

    习题1-5 总结: 1.使用Terminal 创建一个目录: 在Terminal中 输入 mkdir mystuff(目录名可随意设置). 使用Terminal 进入这个目录:继续输入 cd myst ...

  5. 笨办法学python3 学习笔记 习题42 对象、类及从属关系

    类中的self 在类中定义函数时,第一参数永远是类的本身实例变量self,并且调用时,不用传递该参数.

  6. 笨办法学python 粗略笔记(learn python the hard way)

    笨办法学python 粗略笔记(learn python the hard way) 标签(空格分隔): python # _*_ coding: utf_8 _*_ ''' ### ex1 prin ...

  7. 【Python】笨方法学Python学习笔记1

    老早就开始学Python,现在分享一下学习代码. 前几节就是简单的输入输出练习,权当是熟悉一门新语言2333 ###ex1.py #print "Hello World!" pri ...

  8. 《笨办法学Python》笔记33-----一个项目骨架(转)

    骨架目录 为什么要建立这么个骨架? 建立一个项目的骨架目录就如同代码风格,统一规范的项目骨架目录应当是能提高项目的可读性的,进而为后来人提供快速方便的项目维护参考,降低项目维护的成本. 基本的框架包括 ...

  9. 【Python】笨方法学Python学习笔记2

    这几节开始涉及Python函数,与之前所学的语言不同,Python使用缩进来划分代码块,就有些不习惯.可是一旦你接收了这种设定,就会感到莫名的愉悦"看!我的代码多么规整"之类的. ...

最新文章

  1. PHP ORM框架ezpdo(2)之EZPDOSQL
  2. 函数式接口作为方法的参数【应用】
  3. CAS实现原子操作的三大问题
  4. 消息中间件学习总结(20)——主流MQ比较及MQ常见使用场景总结
  5. symfony app dev.php,Symfony 2:404未找到当tryes打开/app_dev.php时出错
  6. tensorflow如何微调时如何只训练后两层_TensorFlow官方发布剪枝优化工具:参数减少80%,精度几乎不变...
  7. Windows运维的学习笔记
  8. paip.提升用户体验---验证码识别与盲人
  9. 用python做股票量化分析豆瓣_快速入门 Python 爬虫
  10. .net工作流框架,拖拽式表单设计,仿钉钉流程设计
  11. MathType软件安装教程及下载地址
  12. 日记侠:要赚钱千万别多想立刻开干
  13. 关于购买域名的一些建议
  14. 2019年电子设计国赛综合测评回顾
  15. 软件测试入门自学笔记(1)测试用例设计
  16. 贝叶斯网络(Bayesian Network)
  17. 云计算需要python吗_国内python云计算是啥
  18. 淘宝、京东、苏宁、拼多多、1688各大电商API接口详情( API 返回值说明,数据分析)
  19. 重庆地税吃螃蟹 数据库虚拟化支撑大集中
  20. Html5版全套股票行情图开源了

热门文章

  1. for update
  2. 6-4 选队长 (10 分)
  3. “手撕“ BootStrap 方法
  4. [Android] 如何制作手电筒程序
  5. VC中CList用法
  6. 微信小程序存储、获取封装
  7. 芯片验证周期——数字IC验证
  8. 新装linux系统环境配置
  9. Revit二次开发前期准备
  10. GEE--LandTrendr