寒假Python之旅
尝试光看书自学Python)
1.23~1.25
23号还挺有干劲不过后来就摸了(
下次绝对不能这么堕落,学的挺少
第 1 章 起步
-
首先我搭建了极其重要的编程环境
这不是有手就行 -
毕竟学过C,Hello World也是没有问题(没有分号真是太舒服辣)
第 2 章 变量和简单数据类型
-
学习了变量这一节,错误还真是不好看啊(
-
学习了字符串这一节,学到了方法,方法 是Python可对数据执行的操作,比如在name.title() 中,name 后面的句点(. )让Python对变量name 执行方法title() 指定的操作。每个方法后面都跟着一对括号,这是因为方法通常需要额外的信息来完成其工作。这种信息是在括号内提供的。函数title() 不需要额外的信息,因此它后面的括号是空的。
-
+号可以拼接字符串
换行符老样子\n
\t是制表符,是指不使用表格的情况下在垂直方向按列对齐文本
-
空白,泛指任何非打印字符,如空格、制表符和换行符。
空白很重要,要删除多余空白。
得到了方法strip(),它存在时可以暂时删除多余空白,没了它还是有空白,怎么办呢,要将删除操作的结果存回变量比如:
hahaha=hahaha.rstrip()
-
title() 将每个单词的首字母都改为大写。
upper()全大写
lower()全小写
lrstrip()只去前面的空白
rstrip()只去后面
strip()前面后面都去掉
-
现在让我们认识一下单引号与双引号。
‘ & ” 我的建议是用双引号。因为这样可以在双引号里套单引号,不然message = ‘One of Python’s strengths is its diverse community.’ 你说在哪结束?
-
Python 2里的一些东西 我认为没有必要掌握(
-
整数
有加减乘除而且3/2=1.5!!!!!!!!
使用表示次方,如5**6表示5的6次方
-
浮点数
Python将带小数点的数字都称为浮点数
可以无脑算
结果小数位数可能不确定,毕竟在计算机中浮点数其实是近似计算
>>> 0.2 + 0.1 0.30000000000000004
但这种真的不是抽风吗?!
-
利用str()进行格式转换避免类型错误
例如下面的错误示例
age=18 message = "Happy " + age + "rd Birthday!"
age的格式是数字而另外两个是字符串,而python不知道你是打算拿23和字符串加减还是用来做字符加减(问就是电脑不如人脑)。
-
在Python 2中…
滚啊(( -
Python的注释用#而不是/*
-
Python之禅(自己看)
>>> import this The Zen of Python, by Tim Peters Beautiful is better than ugly. #更优美 Explicit is better than implicit. #更清晰 Simple is better than complex. #更简单 Complex is better than complicated. #在复杂中选择最简单 Flat is better than nested. #少嵌套 Sparse is better than dense. #别太稠密 Readability counts. #可读性很重要 Special cases aren't special enough to break the rules. #特例不够打破规则 Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. #不要无视错误,除非你故意 In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. #存在多种可能时,尽量找到唯一的且明显的解决方法 Now is better than never. Although never is often better than *right* now.#动手前要好好想想 If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea.#能说清楚的方案才是好方案 Namespaces are one honking great idea -- let's do more of those! #命名空间???是很好的想法,多多使用 >>>
2.6~2.8
肥肠抱歉,我又摸了((实在羞愧
人下人这几天在看无职转生,坦白说还是有点意思的。
洛琪希🤤洛琪希🤤洛琪希🤤洛琪希🤤洛琪希🤤洛琪希🤤洛琪希🤤洛琪希🤤洛琪希🤤洛琪希🤤洛琪希🤤洛琪希🤤洛琪希🤤洛琪希🤤洛琪希🤤洛琪希🤤洛琪希🤤洛琪希🤤洛琪希🤤洛琪希🤤洛琪希🤤洛琪希🤤洛琪希🤤洛琪希🤤洛琪希🤤洛琪希🤤洛琪希🤤
第 3 章 列表简介
列表 由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字0~9或所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有 任何关系。鉴于列表通常包含多个元素,给列表指定一个表示复数的名称(如letters 、digits 或names )是个不错的主意。 在Python中,用方括号([] )来表示列表,并用逗号来分隔其中的元素。
所以列表长得似乎有点像数组,不过放的东西更杂(
bicycles = ['trek', 'cannondale', 'redline', 'specialized'] print(bicycles)
['trek', 'cannondale', 'redline', 'specialized']
-
直接打印列表会连带中括号完整打印出来。
-
bicycles[0] 取出第一个元素——整洁、干净
-
bicycles[0].title()也可以有
-
Python为访问最后一个列表元素提供了一种特殊语法。通过将索引指定为-1 ,可让Python返回最后一个列表元素
-
修改、添加和删除元素
motorcycles.append('ducati') print(motorcycles)
其中append()是一种方法,将括号内元素加入列表
-
motorcycles = [] 创建空列表
-
使用方法insert() 可在列表的任何位置添加新元素。为此,你需要指定新元素的索引和值。
motorcycles = ['honda', 'yamaha', 'suzuki'] motorcycles.insert(0, 'ducati') # ❶ print(motorcycles) ['ducati', 'honda', 'yamaha', 'suzuki']
在这个示例中,值’ducati’ 被插入到了列表开头(见❶);方法insert() 在索引0 处添加空间,并将值’ducati’ 存储到这个地方。这种操作将列表中既有的每个元素都右移一个位置
说人话就是在原列表的0处前面插进去一个元素(
-
方法pop() 可删除列表末尾的元素,并让你能够接着使用它。术语弹出 (pop)源自这样的类比:列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶元素。
(???)motorcycles = ['honda', 'yamaha', 'suzuki'] print(popped_motorcycle) Suzuki
其实pop(1)也可以用,可以弹出第二个元素
-
方法remove()可以移除特定值的元素,比如
motorcycles.remove('ducati')
然而只能移除第一个特定值,需要使用循环来删去所有的特定值。
做了一下四合一作业:
****3-4 嘉宾名单****:如果你可以邀请任何人一起共进晚餐(无论是在世的还是故去的),你会邀请哪些人?请创建一个列表,其中包含至少3个你想邀请的人;然后,使用 这个列表打印消息,邀请这些人来与你共进晚餐。
****3-5 修改嘉宾名单****:你刚得知有位嘉宾无法赴约,因此需要另外邀请一位嘉宾。 以完成练习3-4时编写的程序为基础,在程序末尾添加一条print 语句,指出哪位嘉宾无法赴约。 修改嘉宾名单,将无法赴约的嘉宾的姓名替换为新邀请的嘉宾的姓名。 再次打印一系列消息,向名单中的每位嘉宾发出邀请。
****3-6 添加嘉宾****:你刚找到了一个更大的餐桌,可容纳更多的嘉宾。请想想你还想邀请哪三位嘉宾。 以完成练习3-4或练习3-5时编写的程序为基础,在程序末尾添加一条print 语句,指出你找到了一个更大的餐桌。 使用insert() 将一位新嘉宾添加到名单开头。 使用insert() 将另一位新嘉宾添加到名单中间。 使用append() 将最后一位新嘉宾添加到名单末尾。 打印一系列消息,向名单中的每位嘉宾发出邀请。
****3-7 缩减名单****:你刚得知新购买的餐桌无法及时送达,因此只能邀请两位嘉宾。 以完成练习3-6时编写的程序为基础,在程序末尾添加一行代码,打印一条你只能邀请两位嘉宾共进晚餐的消息。 使用pop() 不断地删除名单中的嘉宾,直到只有两位嘉宾为止。每次从名单中弹出一位嘉宾时,都打印一条消息,让该嘉宾知悉你很抱歉,无法邀请他来共进 晚餐。 对于余下的两位嘉宾中的每一位,都打印一条消息,指出他依然在受邀人之列。 使用del 将最后两位嘉宾从名单中删除,让名单变成空的。打印该名单,核实程序结束时名单确实是空的。
成果:
guestlist=['mother','dad','friends']
print("I'd like to invite "+guestlist[0]+", "+guestlist[1]+" and "+guestlist[2]+" to join the party.")
print("Sorry, I just hear that "+guestlist[2]+" cannot come. Let's do that again.")
guestlist[2]='Ffriends'
print("I'd like to invite "+guestlist[0]+", "+guestlist[1]+" and "+guestlist[2]+" to join the party.")
print("Oh, come on! I find a bigger place. Now I want to invite three more guests.")
guestlist.insert(0,'The One')
guestlist.insert(2,'The Two')
guestlist.append('The Three')
print("I'd like to invite "+guestlist[0]+", "+guestlist[1]+", "+guestlist[2]+", "+guestlist[3]+", "+guestlist[4]+" and "+guestlist[5]+" to join the party.")
print("What a pity! Only two men can come.")
i=1
while i<5:
print("Sorry, "+guestlist[i].title()+", you cannot come.")
i=i+1
I'd like to invite mother, dad and friends to join the party.
Sorry, I just hear that friends cannot come. Let's do that again.
I'd like to invite mother, dad and Ffriends to join the party.
Oh, come on! I find a bigger place. Now I want to invite three more guests.
I'd like to invite The One, mother, The Two, dad, Ffriends and The Three to join the party.
What a pity! Only two men can come.
Sorry, Mother, you cannot come.
Sorry, The Two, you cannot come.
Sorry, Dad, you cannot come.
Sorry, Ffriends, you cannot come.
奇怪,while事哪来的啊(别骂了,不会for循环)
-
组织列表
-
方法sort()可以对列表进行永久按字母排序从A到Z
也可以在括号内输入参数reverse=True来倒着排序
通过使用函数sorted()可以对列表进行临时排序
函数sorted() 让你能够按特定顺序显示列表元素,同时不影响它们在列表中的原始排列顺序。()同样可以加入reverse=True
想要反转原始排序,可以使用方法reverse()
-
可以使用len()来获得列表长度(即元素数量)
第 4 章 操作列表
痛改前非的第二天(
-
有时需要对所有元素执行相同的操作,此时可以使用for循环
结构:for XX(任意名字,此时表示列表内元素) in XXX(列表名):
循环命令部分
-
注意缩进,有缩进才算进循环里~~(废话)~~
-
range(5,10) 函数可以生成5到9所有整数
还可以指定步长,譬如range(2,43,2)最后面的2指的是每个数字生成一次
>>> for value in range(1,5):
... print(value)
...
1
2
3
4
>>>
没错最后面的数字就这么被吃了(
-
函数list()可以将range() 的结果直接转换为数字列表
就会这样:
>>>numbers = list(range(1,6)) print(numbers) [1, 2, 3, 4, 5]
-
数个处理数字列表的函数
min()找出最小值,max(),sum()
-
列表解析:列表解析将for 循环和创建新元素的代码合并成一行,并自动
附加新元素。
squares = [value**2 for value in range(1,11)] #这是啥??? print(squares) [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
-
可以处理列表的部分元素——Python称之为切片
-
索引: 数组名[起始位置的数字:结束位置数字]
players = ['charles', 'martina', 'michael', 'florence', 'eli'] print(players[0:3] ['charles', 'martina', 'michael']
如果你没有指定第一个索引,Python将自动从列表开头开始,结尾同理(冒号还是要打的)负数索引返回离列表末尾相应距离的元素
player[0:] #从开头到结尾
player[:5] #从开头到第四个
player[-3:] #最后三个
- 复制列表,通过创建一个[:]的切片,赋给另一个列表即可
- 不可变的列表被称为元组。元组看起来犹如列表,但使用圆括号而不是方括号来标识。但是可以直接重新定义元组。
设置代码格式
- 每级缩进4个空格
- 如果你混合使用了制表符和空格,可将文件中所有的制表符转换为空格
- 一行不超过79字符,72更好
- 要将程序的不同部分分开,可使用空行。一行就够了
- 请访问https://python.org/dev/peps/pep-0008/ ,阅读PEP 8格式设置指南。
第 5 章 if语句
痛改前非的第三天
怎么说呢,突然看到了熟悉的东西(if语句),应该不会太麻烦吧(
if语句看起来和C语言很像,当然不可能完全一样
-
格式:
if XXX: #此处为条件,注意后面有冒号,也不要用括号括起来 XXXX elif XXXX: #elif想加多少就加,也可以没有 XXXX else XXX: #依旧注意冒号 XXXX
-
在Python中检查是否相等时区分大小写。(这不是挺好的嘛)
-
and要求所有都符合条件,而or只要一个符合
-
检查数字,字符串是否相等,此处略过
-
检查特定值是/否包含在列表中:格式:if XXX (not) in list:
-
随着你对编程的了解越来越深入***(大嘘),将遇到术语布尔表达式* ,它不过是条件测试的别名。
所谓条件测试,即为直接输入判断语句(不带if的那种),会输出True或者False,像这样
>>> age_0 = 18 >>> age_0 >= 21 or age_1 >= 21 False
条件判断和计算一样都是直接出成果,1+1==2等价于True,而1+1等价于2
print(1+1==2) print(1+1) True 2
-
有时if-elif-else, 有时直接多个if并列即可
-
在if 语句中将列表名用在条件表达式中时,Python将在列表至少包含一个元素时返回True ,并在列表为空时返回False 。
-
关于格式,PEP 8的建议是,在诸如== 、>= 和<= 等比较运算符两边各添加一个空格。
做了作业,懒得复制题目了(((
VIPlist=['DAB','YMS','YMSD','YMSSD','admin']
if VIPlist:
for VIP in VIPlist:
if VIP=='admin':
print("Hello admin, would you liketo seeastatus report?")
else:
print("Hello "+VIP+", thank you for logging in again.")
else:
print("We need to find some users!")
current_users=['DAB','YMS','YMSD','YMSSD','admin']
new_users=['YMSSD','admin','LMY','ADDD','Roxy']
for user in new_users:
if user in current_users:
print("Another name plz")
else:
print("OK")
numbers=list(range(1,10))
for number in numbers:
if number == 1:
print("1st")
elif number == 2:
print("2nd")
elif number == 3:
print ("3rd")
else:
print(str(number)+"th")