从零开始学Python第二天,其实昨天进度挺快的,一直写到3-7才停下,因为个人想法要用到while循环,我对Python的while不是很了解(其实是因为太晚了不想再学了),然后今早搞定了3-7。
3-1 姓名:将一些朋友的姓名存储在一个列表中,并将其命名为 names。依次访问该列表中的每个元素,从而将每个朋友的姓名都打印出。 #感觉列表刚开始是考察索引的(书上是索引,我习惯叫下标),所以前面几题是采用的一个一个输出,后面宾客那个要求多的题目就采用了循环。 friend_names.py
names=['yi','xia','zhou','zhao']
print(names[0])
print(names[1])
print(names[2])
print(names[3])
3-2 问候语:继续使用练习 3-1 中的列表,但不打印每个朋友的姓名,而为每人打印一条消息。每条消息都包含相同的问候语,但抬头为相应朋友的姓名。
print('hi,'+names[0])
print('hi,'+names[1])
print('hi,'+names[2])
print('hi,'+names[3])
#没有用循环结构,这个主要考察应该是列表的下标问题
3-3 自己的列表:想想你喜欢的通勤方式,如骑摩托车或开汽车,并创建一个包含多种通勤方式的列表。根据该列表打印一系列有关这些通勤方式的宣言,如“I would like to own a Honda motorcycle”。 traffic_ways.py
traffic_ways=['bicycle','car','plane','ship']
print('I would like to own a '+traffic_ways[0])
print('I would like to own a '+traffic_ways[1])
print('I would like to own a '+traffic_ways[2])
print('I would like to own a '+traffic_ways[3])
3-4 嘉宾名单:如果你可以邀请任何人一起共进晚餐(无论是在世的还是故去的),你会邀请哪些人?请创建一个列表,其中包含至少 3 个你想邀请的人;然后,使用这个列表打印消息,邀请这些人来与你共进晚餐。 guest_list.py
guest_list=['a','b','c','d','e']
print('Dear '+guest_list[0]+',I would like to invite you to dinner.')
print('Dear '+guest_list[1]+',I would like to invite you to dinner.')
print('Dear '+guest_list[2]+',I would like to invite you to dinner.')
print('Dear '+guest_list[3]+',I would like to invite you to dinner.')
print('Dear '+guest_list[4]+',I would like to invite you to dinner.')
3-5 修改嘉宾名单:你刚得知有位嘉宾无法赴约,因此需要另外邀请一位嘉宾。以完成练习 3-4 时编写的程序为基础,在程序末尾添加一条 print 语句,指出哪位嘉宾无法赴约。修改嘉宾名单,将无法赴约的嘉宾的姓名替换为新邀请的嘉宾的姓名。再次打印一系列消息,向名单中的每位嘉宾发出邀请。 现在假设是c无法参加,用del需要知道索引,所以采用remove(c)来删除,再次打印的话采用循环结构可能会好点,在3-4基础上进行优化
#指出c无法参加
print('c can not come.')
#删除c
guest_list.remove('c')
#再次邀请除c之外的宾客
for name in guest_list:
? ? print('Dear ' +name+ ',I would like to invite you to dinner.')
拓展:
#先删除C在通知谁无法参加的话采用pop
#获得无法参加的c在列表中的索引
print(guest_list.index('c'))
#使用pop()方法删除c,因为要表明c无法来
absent_name=guest_list.pop(guest_list.index('c'))
print(absent_name+' can not come.')
for name in guest_list:
? ? print('Dear ' +name+ ',I would like to invite you to dinner.')
3-6 添加嘉宾:你刚找到了一个更大的餐桌,可容纳更多的嘉宾。请想想你还想邀请哪三位嘉宾。以完成练习 3-4 或练习 3-5 时编写的程序为基础,在程序末尾添加一条 print 语句,指出你找到了一个更大的餐桌。使用 insert()将一位新嘉宾添加到名单开头。使用 insert()将另一位新嘉宾添加到名单中间。使用 append()将最后一位新嘉宾添加到名单末尾。打印一系列消息,向名单中的每位嘉宾发出邀请。 沿用3-5的循环,添加到中间的时候需要获取guest_list的len然后除2就是中间位置的索引
guest_list=['a','b','c','d','e']
#把f添加到开头
guest_list.insert(0,'f')
#把g添加到中间
guest_list.insert(int(len(guest_list)/2),'g')
#把h添加到末尾
guest_list.append('h')
for name in guest_list:
? ? print('Dear ' +name+ ',I would like to invite you to dinner.')
3-7 缩减名单:你刚得知新购买的餐桌无法及时送达,因此只能邀请两位嘉宾。以完成练习 3-6 时编写的程序为基础,在程序末尾添加一行代码,打印一条你只能邀请两位嘉宾共进晚餐的消息。使用 pop()不断地删除名单中的嘉宾,直到只有两位嘉宾为止。每次从名单中弹 出一位嘉宾时,都打印一条消息,让该嘉宾知悉你很抱歉,无法邀请他来共进晚餐。对于余下的两位嘉宾中的每一位,都打印一条消息,指出他依然在受邀人之列。使用 del 将最后两位嘉宾从名单中删除,让名单变成空的。打印该名单,核实程序结束时名单确实是空的。
#首先确定一下3-6之后我们的名单是['f', 'a', 'b', 'g', 'c', 'd', 'e', 'h']
print(guest_list)
#先打印只能邀请俩人的消息
print("I'm sorry I can only have two guests for dinner")
#获得名单总人数用于while循环
number=len(guest_list)
while number>2:
? ? absent_name=guest_list.pop()
? ? number = len(guest_list)
? ? print("Dear "+absent_name+",I'm sorry I can't invite you to dinner.")
#输出只有两个的宾客名单
print(guest_list)
#循环打印邀请消息
for name in guest_list:
? ? print("Dear "+name+" you're still invited to dinner.")
#删除名单
for i in range(2):
? ? del guest_list[0]
#核实确实是空名单
print(guest_list)
上午总结是觉得Python的For循环结构很简洁方便!(更深入的可能是定义变量很方便):for 你需要的变量 in 列表(不太懂这个能不能单纯交列表,就是一个需要的集合)别忘了:,但是相比于其他编程语言(C、C++、Java)感觉可能指定循环次数要复杂一点,然后差了一下是可以用range()函数来创建一个整数列表,贴一下百度到的专业介绍:
range(start, stop[, step])
参数说明:
- start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
- stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
- step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
3-8 放眼世界:想出至少 5 个你渴望去旅游的地方。 将这些地方存储在一个列表中,并确保其中的元素不是按字母顺序排列的。 按原始排列顺序打印该列表。不要考虑输出是否整洁的问题,只管打印原始Python 列表。 使用 sorted()按字母顺序打印这个列表,同时不要修改它。 再次打印该列表,核实排列顺序未变。 使用 sorted()按与字母顺序相反的顺序打印这个列表,同时不要修改它。 再次打印该列表,核实排列顺序未变。 使用 reverse()修改列表元素的排列顺序。打印该列表,核实排列顺序确实变了。 使用 reverse()再次修改列表元素的排列顺序。打印该列表,核实已恢复到原来的排列顺序。 使用 sort()修改该列表,使其元素按字母顺序排列。打印该列表,核实排列顺序确实变了。 使用 sort()修改该列表,使其元素按与字母顺序相反的顺序排列。打印该列表,核实排列顺序确实变了。
place_list=['London','DC','New York','Chengdu','Paris']
#原始排列顺序打印
print(place_list)
#使用sorted()按字母顺序打印
print(sorted(place_list))
#再次打印,未改变原始顺序
print(place_list)
#使用sorted()按与字母顺序相反的顺序打印
#是按照字母相反,reverse是把原始列表反过来
print(sorted(place_list,reverse=True))
#再次打印,未改变原始顺序
print(place_list)
#使用reverse()修改列表元素的排列顺序
place_list.reverse()
print(place_list)
#再次修改列表元素的排列顺序,恢复原始顺序
place_list.reverse()
print(place_list)
#使用sort()修改该列表,使其元素按字母顺序排列
place_list.sort()
print(place_list)
#使用sort()修改该列表,使其元素按与字母顺序相反的顺序排列
place_list.sort(reverse=True)
print(place_list)
3-9 晚餐嘉宾:在完成练习 3-4~练习 3-7 时编写的程序之一中,使用 len()打印一条消息,指出你邀请了多少位嘉宾来与你共进晚餐。
guest_list=['a','b','c','d','e']
number=len(guest_list)
print(str(number)+' were invited')
3-10 尝试使用各个函数:想想可存储到列表中的东西,如山岳、河流、国家、城市、语言或你喜欢的任何东西。编写一个程序,在其中创建一个包含这些元素的列表,然后,对于本章介绍的每个函数,都至少使用一次来处理这个列表。 这个在之前的题目也基本都了解了,等之后遇到了再来回顾
3-11 有意引发错误:如果你还没有在程序中遇到过索引错误,就尝试引发一个这种错误。在你的一个程序中,修改其中的索引,以引发索引错误。关闭程序前,务必消除这个错误。 这个之前有遇到过,在循环删除最后两个宾客的时候,del guest_list[0],一开始的想法是for i in range(2):del guest_list[i],很好理解,就是第一次删除guest_list[0],然后删除guest_list[1],但是忽略了一点就是del删除索引0之后原本的1位置的元素现在的索引是0。guest_list=['f','a'],第一次循环删除guest_list[0],列表只剩['a'],然后第二次循环执行的是del guest_list[1],但是现在的列表是没有guest_list[1]的,显示报错:? ? del guest_list[i] IndexError: list assignment index out of range
总结一下:主要是列表的使用,不算是很困难,主要的就是有点分不清是列表中的方法还是外部方法,还需要在后续的学习中巩固一下。明天第四章应该会有点慢,没法一天一章了。冲冲冲!
|