“笨办法”学Python笔记 Lesson25—34

一、作业内容

笨办法学 Python 习题25-34以及加分题。

二、作业代码:

# 习题 25: 更多更多的练习

def break_words(stuff):

    """This function will break up words for us."""

    words = stuff.splif(' ')

    return words



def sort_words(words):

    """Sorts the words."""

    return sorted(words)



def print_first_word(words):

    """Prints the first word after popping if 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 full sentence and returns the sorted word."""

    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)

 

加分习题

1.研究答案中没有分析过的行,找出它们的来龙去脉。确认自己明白了自己使用的是模组 ex25 中定义的函数。

2.试着执行 help(ex25) 和 help(ex25.break_words) 。这是你得到模组帮助文档的方式。 所谓帮助文档就是你定义函数时放在 """ 之间的东西,它们也被称作 documentation comments (文档注解),后面你还会看到更多类似的东西。

3.重复键入 ex25. 是很烦的一件事情。有一个捷径就是用 from ex25 import * 的方式导入模组。这相当于说:“我要把 ex25 中所有的东西 import 进来。”程序员喜欢说这样的倒装句,开一个新的会话,看看你所有的函数是不是已经在那里了。

4.把你脚本里的内容逐行通过 python 编译器执行,看看会是什么样子。你可以执行CTRL-D (Windows 下是 CTRL-Z)来关闭编译器。

# 加分习题1.

# 此练习需要在命令行中先输入以下内容:

# >>>import sys

# >>>sys.path.append(r'E:\python3_project')

# >>>import ex25



# 用def定义函数 break_words,参数为stuff

# 在stuff上调用split()函数,参数为 ' ',并存放到变量words

# 返回变量words的值

def break_words(stuff):

    """This function will break up words for us."""

    words = stuff.split(' ')

    return words



# 用def定义函数 sort_words(),参数为words

# 调用sorted()函数对参数进行排序,并将值返回

def sort_words(words):

    """Sorts the words."""

    return sorted(words)



# 用def定义函数 print_first_word(),参数为words

# 在words上调用pop() 函数用于移除列表中的一个元素(默认最后一个元素),参数为0(第一个元素)。并且返回该元素的值。并存放到变量word

# 打印变量word

def print_first_word(words):

    """Prints the first word after popping if off."""

    word = words.pop(0)

    print(word)



# 用def定义函数 print_last_word,参数为words

# 在words上调用pop() 函数用于移除列表中的一个元素(默认最后一个元素),参数为-1(最后一个元素)。并且返回该元素的值。并存放到变量word

# 打印变量word

def print_last_word(words):

    """Prints the Last word after popping it off."""

    word = words.pop(-1)

    print(word)



# 用def定义函数 sort_sentence,参数为 sentence

# 调用函数 sort_sentence,参数为 sentence,并将结果存放到变量 words

# 调用函数 sort_words,参数为 words,并将结果返回

def sort_sentence(sentence):

    """Takes in full sentence and returns the sorted word."""

    words = break_words(sentence)

    return sort_words(words)



# 用def定义函数 print_first_and_last,参数为 sentence

# 调用函数 break_words,参数为sentence,并将结果存放到变量 words

# 调用函数 print_first_word,参数为 words

# 调用函数 print_last_word,参数为 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

# 调用函数 sort_sentence,参数为sentence,并将结果存放到变量 words

# 调用函数 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)

 

# 习题 26: 恭喜你,现在可以考试了!

def break_words(stuff):

    """This function will break up words for us."""

    words = stuff.split(' ')

    return words



def 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)





print("Let's practice everything.")

print('You\'d need to know\'bout escapes with\\that do\nnewlines and\ttabs.')



poem = """

\tThe lovely world

with logic so firmly planted

cannot discern \n the needs of love

nor comprehend passion from intuition

and requires an explantion

\n\t\twhere there is none.

"""





print("--------------")

print(poem)

print("--------------")



five = 10 - 2 + 3 - 5

print("This should be five: %s" % five)



def secret_formula(started):

    jelly_beans = started * 500

    jars = jelly_beans / 1000

    crates = jars / 100

    return jelly_beans, jars, crates





start_point = 10000

beans, jars, crates = secret_formula(start_point)



print("With a starting point of: %d" % start_point)

print("We'd have %d jeans, %d jars, and %d crates." % (beans, jars, crates))



start_point = start_point / 10



print("We can also do that this way:")

print("We'd have %d beans, %d jars, and %d crabapples." % secret_formula(start_point))





sentence = "All god\tthings come to those who weight."



words = break_words(sentence)

sorted_words = sort_words(words)



print_first_word(words)

print_last_word(words)

print_first_word(sorted_words)

print_last_word(sorted_words)

sorted_words = sort_sentence(sentence)

print(sorted_words)



print_first_and_last(sentence)



print_first_and_last_sorted(sentence)

 # 习题 27: 记住逻辑关系



# 一、记住逻辑术语

and # 与

or # 或

not # 非

!= # (not equal) 不等于

== # (equal) 等于

>= # (greater-than-equal) 大于等于

<= # (less-than-equal) 小于等于

True # 真

False # 假



# 二、真值表

# 书中的方法是通过索引卡片记忆和默写表达式,来判断`True` or `False`。

死记硬背很麻烦啊……然后我去找其他的教程。
廖雪峰的 Python3 教程中:

布尔值可以用and、or和not运算。
and运算是与运算,只有所有都为True,and运算结果才是True:

>>> True and True

True

>>> True and False

False

>>> False and False

False

>>> 5 > 3 and 3 > 1

True

or运算是或运算,只要其中有一个为True,or运算结果就是True:

>>> True or True

True

>>> True or False

True

>>> False or False

False

>>> 5 > 3 or 1 > 3

True

这样很容易就可以记住了。

 

# 习题 28: 布尔表达式练习

>>> True and True

True

>>> False and True

False

>>> 1 == 1 and 2 == 1

False

>>> "test" == "test"

True

>>> 1 == 1 or 2 != 1

True

>>> True and 1 == 1

True

>>> False and 0 != 0

False

>>> True or 1 == 1

True

>>> "test" == "testing"

False

>>> 1 != 0 and 2 == 1

False

>>> "test" != "testing"

True

>>> "test" == 1

False

>>> not (True and False)

True

>>> not (1 == 1 and 0 != 1)

False

>>> not (10 == 1 or 1000 == 1000)

False

>>> not (1 != 10 or 3 == 4)

False

>>> not ("testing" == "testing" and "Zed" == "Cool Guy")

True

>>> 1 == 1 and not ("testing" == 1 or 1 == 0)

True

>>> "chunky" == "bacon" and not (3 == 4 or 3 == 3)

False

>>> 3 == 3 and not ("testing" == "testing" or "Python" == "Fun")

False
# 加分习题



# 一、Python 里还有很多和 != 、 == 类似的操作符. 试着尽可能多地列出 Python 中的等价运算符。例如 < 或者 <= 就是。

# 二、写出每一个等价运算符的名称。例如 != 叫 “not equal(不等于)”。



# != 叫 not equal(不等于)

# == 叫 equal(等于)

# < 叫 less than(小于)

# <= 叫 less than or equal(小于或等于)







# 三、在 python 中测试新的布尔操作。在敲回车前你需要喊出它的结果。不要思考,凭自己的第一感就可以了。把表达式和结果用笔写下来再敲回车,最后看自己做对多少,做错多少。





# 四、把习题 3 那张纸丢掉,以后你不再需要查询它了。

 # 习题 29: 如果(if)

people = 20

cats = 30

dogs = 15



if 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 += 5



if 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.")



运算结果如下:

Too many cats! The world is doomed!

The world is dry!

People are greater than or equal to dogs.

People are less than or equal to dogs

People are dogs.



Process finished with exit code 0
# 加分习题



# 猜猜“if语句”是什么,它有什么用处。

# 在做下一道习题前,试着用自己的话回答下面的问题:

# 一、你认为 if 对于它下一行的代码做了什么?



# 答:if根据条件判断要不要执行下一行的代码。





# 二、为什么 if 语句的下一行需要 4 个空格的缩进?

# 答:规则。便于查看?





# 三、如果不缩进,会发生什么事情?

# 答:会报错。

IndentationError: expected an indented block





# 四、把习题 27 中的其它布尔表达式放到``if语句``中会不会也可以运行呢?试一下。

people = 20

cats = 30

dogs = 15



if 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!")



# 答:可以运行。



五、如果把变量 people, cats, 和 dogs 的初始值改掉,会发生什么事情?



执行的结果会发生变化。

 # 习题 30: Else 和 If

people = 40

cars = 39

buses = 15





if cars > people:

    print("We should take the cars.")

else:

    print("We can''t decide.")



if buses > cars:

    print("That's too many buses.")

elif buses < cars:

    print("Maybe we could take the buses.")

else:

    print("We still can't decide.")



if people > buses:

    print("Alright, let's juse take the buses.")

else:

    print("Fine, let's stay home then.")
# 加分习题

# 一、猜想一下 elif 和 else 的功能。

# elif

# 二、将 cars, people, 和 buses 的数量改掉,然后追溯每一个 if 语句。看看最后会打印出什么来。

# 三、试着写一些复杂的布尔表达式,例如 cars > people and buses < cars。

# 四、在每一行的上面写注解,说明这一行的功用。

 # 习题 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.  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("Well, doing %s is probably better.  Bear runs away.") % bear



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.  Good job!")

    else:

        print("The insanity rots your eyes into a pool of muck.  Good job!")



else:

    print("You stumble around and fall on a knife and die.  Good job!")

 加分习题

为游戏添加新的部分,改变玩家做决定的位置。尽自己的能力扩展这个游戏,不过别把游戏弄得太怪异了。


# 习题 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("This is count %d" % number)



# same as above

for fruit in fruits:

    print("A fruit of type: %s" % fruit)



# also we can go through mixed lists too

# notice we have to use %r since we don't know what's in it

for i in change:

    print("I got %r" % 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("Adding %d to the list." %i)

    # append is a function that  lists understand

    elements.append(i)



#now we can print them out too

for i in elements:

    print("Element was: %d" % i)

运行结果如下:

This is count 1

This is count 2

This is count 3

This is count 4

This is count 5

A fruit of type: apples

A fruit of type: oranges

A fruit of type: pears

A fruit of type: apricots

I got 1

I got 'pennies'

I got 2

I got 'dimes'

I got 3

I got 'quarters'

Adding 0 to the list.

Adding 1 to the list.

Adding 2 to the list.

Adding 3 to the list.

Adding 4 to the list.

Adding 5 to the list.

Element was: 0

Element was: 1

Element was: 2

Element was: 3

Element was: 4

Element was: 5

 

Process finished with exit code 0

# 加分习题

# 一、注意一下 range 的用法。查一下 range 函数并理解它。



# 打印由函数range(5)生成从0开始小于5的整数

print(list(range(5)))

# 打印整数1到整数100的序列。

print(list(range(101)))





sum = 0

for x in range(101):

    sum = sum + x

print(sum)

运行结果如下:

[0, 1, 2, 3, 4]

[0, 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, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]

5050

 

Process finished with exit code 0


# 二、在第 22 行,你可不可以直接将 elements 赋值为 range(0,6),而无需使用 for 循环?



# 可以

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("This is count %d" % number)



# same as above

for fruit in fruits:

    print("A fruit of type: %s" % fruit)



# also we can go through mixed lists too

# notice we have to use %r since we don't know what's in it

for i in change:

    print("I got %r" % i)



# we can also build lists, first start with an empty one

elements = []





elements = range(0, 6)

print(elements)

#now we can print them out too

for i in elements:

    print("Element was: %d" % i)

 

运行结果如下:

This is count 1

This is count 2

This is count 3

This is count 4

This is count 5

A fruit of type: apples

A fruit of type: oranges

A fruit of type: pears

A fruit of type: apricots

I got 1

I got 'pennies'

I got 2

I got 'dimes'

I got 3

I got 'quarters'

range(0, 6)

Element was: 0

Element was: 1

Element was: 2

Element was: 3

Element was: 4

Element was: 5

 

Process finished with exit code 0


 

# 三、在 Python 文档中找到关于列表的内容,仔细阅读一下,除了 append 以外列表还支持哪些操作?

squares = [1, 2, 3, 4, 5]

print(squares)



# 列表可以被索引

print(squares[0])

print(squares[1])

print(squares[-1])



#列表可以被切片

print(squares[1:])

print(squares[-3:])

print(squares[:])



#列表支持连接这样的操作

print(squares + [7, 8, 9])



#列表是可变的,它允许修改元素

print(squares)

squares[3] = 1217

print(squares)



#用pop(i)方法,删除list指定位置的元素,i是索引位置

#若想删除list末尾的元素,用pop()即可

print(squares)

squares.pop(3)

print(squares)



运行结果如下:

[1, 2, 3, 4, 5]

1

2

5

[2, 3, 4, 5]

[3, 4, 5]

[1, 2, 3, 4, 5]

[1, 2, 3, 4, 5, 7, 8, 9]

[1, 2, 3, 4, 5]

[1, 2, 3, 1217, 5]

[1, 2, 3, 1217, 5]

[1, 2, 3, 5]

 

Process finished with exit code 0


# 习题 33: While 循环



i = 0

numbers = []



while i < 6:

    print("At the top i is %d" % i)

    numbers.append(i)



    i = i + 1

    print("Numbers now: ", numbers)

    print("At the bottom i is %d" % i)



print("The numbers: ")



for num in numbers:

    print(num)

运行结果如下:

At the top i is 0

Numbers now:  [0]

At the bottom i is 1

At the top i is 1

Numbers now:  [0, 1]

At the bottom i is 2

At the top i is 2

Numbers now:  [0, 1, 2]

At the bottom i is 3

At the top i is 3

Numbers now:  [0, 1, 2, 3]

At the bottom i is 4

At the top i is 4

Numbers now:  [0, 1, 2, 3, 4]

At the bottom i is 5

At the top i is 5

Numbers now:  [0, 1, 2, 3, 4, 5]

At the bottom i is 6

The numbers:

0

1

2

3

4

5

 

Process finished with exit code 0

# 加分习题

# 一、将这个 while 循环改成一个函数,将测试条件(i < 6)中的 6 换成一个变量。

# 二、使用这个函数重写你的脚本,并用不同的数字进行测试。

# 三、为函数添加另外一个参数,这个参数用来定义第 8 行的加值 + 1 ,这样你就可以让它任意加值了。

# 四、再使用该函数重写一遍这个脚本。看看效果如何。

# 五、接下来使用 for-loop 和 range 把这个脚本再写一遍。你还需要中间的加值操作吗?如果你不去掉它,会有什么样的结果?

# 习题 34: 访问列表的元素

animals = ['bear', 'python', 'peacock', 'kangaroo', 'whale', 'platypus']



print("The 1st animal is at 0 and is a", animals[0], ".")

print("The animal at 0 is the 1st animal and  is a", animals[0], ".")

print("The 2nd animal is at 1 and is a", animals[1], ".")

print("The animal at 1 is the 2nd animal and is a", animals[1], ".")



print("The 3rd animal is at 2 and is a", animals[2], ".")

print("The animal at 2 is the 3rd animal and  is a", animals[2], ".")



print("The 4th animal is at 3 and is a", animals[3], ".")

print("The animal at 3 is the 4th animal and is a", animals[3], ".")



print("The 5th animal is at 4 and is a", animals[4], ".")

print("The animal at 4 is the 5th animal and is a", animals[4], ".")



print("The 6th animal is at 5 and is a", animals[5], ".")

print("The animal at 5 is the 6th animal and is a", animals[5], ".")



运行结果如下:

The 1st animal is at 0 and is a bear .

The animal at 0 is the 1st animal and  is a bear .

The 2nd animal is at 1 and is a python .

The animal at 1 is the 2nd animal and is a python .

The 3rd animal is at 2 and is a peacock .

The animal at 2 is the 3rd animal and  is a peacock .

The 4th animal is at 3 and is a kangaroo .

The animal at 3 is the 4th animal and is a kangaroo .

The 5th animal is at 4 and is a whale .

The animal at 4 is the 5th animal and is a whale .

The 6th animal is at 5 and is a platypus .

The animal at 5 is the 6th animal and is a platypus .

 

Process finished with exit code 0

# 加分习题

# 一、上网搜索一下关于序数(ordinal number)和基数(cardinal number)的知识并阅读一下。

# 二、以你对于这些不同的数字类型的了解,解释一下为什么 “January 1, 2010” 里是 2010 而不是 2009?(提示:你不能随机挑选年份。)

# 三、再写一些列表,用一样的方式作出索引,确认自己可以在两种数字之间互相翻译。

# 使用 python 检查自己的答案。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值