一个有C&C++基础的菜鸡学Python记录

Python学习笔记

2021.0405

定义一个字符串变量名为name,数字变量名为num,接下来的笔记中,当要描述变量名时都用name/num变量表示。

1、Python中定义字符串变量不需要使用关键字;
2、与C++中一样,直接将字符串相加便是将他们连接起来了;
3、Python中单引号‘’和双引号“”用法一样;

<修改大小写>
4、name.title():表示将name字符串变量中的每个单词的首字母大写;
5、name.upper():表示将name字符串变量中的每个字母都变成大写;
6、name.lower():表示将name字符串变量中的每个字母都变成小写;

<删除空白>
7、name.rstrip():确保字符串的末尾没有空白,将末尾的空白删去;
8、name.lstrip():确保字符串的开头没有空白,将开头的空白删去;
9、name.strip():确保字符串的开头和末尾都没有空白,检查开头后末尾的空白并将其删去;
10、这几种删除都是暂时性的,并不会真正地删除,若要永久删除则要把返回值赋给变量,即name=name.strip();
11、删除空白的目的:这些剥除函数最常用于存储用户输入前对其进行清理;

12、Python2中的print函数有些用()有些不用,Python3中的print()一定要用(),因为在Python3中print是以函数的形式调用的;

<数字>
13、Python中的乘方运算直接用两个乘号进行,例如:32表示3的平方;
14、num.str():让Python将非字符串值表示为字符串;
15、在Python2中,两个整型相除输出的也一定是整型,若要输出浮点型则要至少保证其中一个参与运算的数是浮点数,但在Python3中不会出现
该情况;

16、Python中的单行注释用“#”标记;
17、每个程序之中一定要有注释,养成好的习惯;
18、当遇到问题时,解决方案都尽量选择更加简单的,而不是选择更为复杂的,这样子编写的代码更加易于维护与改进;
19、当所写的代码复杂时,一定要添加有益的注释,让其更加易于理解;
20、Python代码(其实不仅仅是Python)编写的指导原则:在Python终端输入import this便可以看到;


2021.0406

定义一个列表,变量名为List

<列表基本概念>
21、在Python中用方括号[]来表示列表,并用逗号来分隔其中的元素;
22、Python列表中的索引(下标)存在负值,-1代表倒数第1个元素,-2代表倒数第2个元素…以此类推;
23、设置负数索引的原因是:我们常常需要在不知道列表长度的情况下访问最后的元素;

<操作列表元素>
24、修改列表元素,可指定列表名和要修改的元素的索引,然后再指定该元素的新值;
25、List.append(‘value’):将value添加到列表的末尾;
26、List.insert(pos,‘value’):将value添加到列表中索引为pos的位置,该操作将列表中原有的每个元素都右移一个位置;
27、del List[pos]:当知道要删除的元素位置时,可以用该语句删除索引为pos的元素,删除该元素后,pos之后的元素像左移一个位置;
28、List.pop():删除List列表的末尾元素,并且其返回值是末尾元素的值;
29、List.pop(pos):删除List列表中索引为pos的元素,并返回该元素的值;
30、List.remove(‘value’):删除List列表值为value的元素;
31、remove()只删除第一个指定的值。如果要删除的值可能在列表中多次出现,就需要使用循环来判断是否删除了所有这样的值;

<组织列表>
32、List.sort():永久性修改了列表元素的排列顺序,可使List中的元素按字母顺序从小到大排列;
33、List.sort(reverse=True):按与字母顺序相反的顺序永久性排列;
34、List.sorted():sorted()可以使List按照特定的顺序显示列表元素,但不影响它们在列表中的原始排列顺序;
35、List.reverse():永久性翻转列表元素的排列顺序,只是单纯地将列表的顺序调换一下,并不会将其元素的顺序按照字母大小进行排列;
36、List.len():获取列表List的长度,含多少个元素长度就为多少;


2021.0407

<for循环>
37、for temp in List:
print(temp)
for循环遍历列表中的每个元素,并打印出来,每遍历一个元素将值存储到变量temp中,List中有多少个元素就执行多少次print语句;
38、选择描述单个列表元素的有意义的名称大有帮助,使用单数和复数式名称,可以帮助我们判断代码段处理的是单个列表元素还是整个列表;
39、在for循环后想包含多少条代码都可以。在for循环的冒号“:”后面,每个缩进的代码行都是循环的一部分,且将针对列表中的每个值都执行一次;
40、Python是根据缩进来判断代码行与前一个代码行的关系的;
41、为了避免意外缩进错误,我们只缩进需要缩进的代码,没必要缩进的就不要缩进;
42、不要遗漏了for循环后的冒号,遗漏了会导致语法错误;

<创建数值列表>
43、for value in range(num1,num2):
print(value)
让Python从你指定的第一个值num1开始数,并在到达你指定的第二个值num2后停止,输出不包含第二个值nums;
44、list(range(1,6)):使用函数list()将range(1,6)的结果直接转换为列表,列表中的元素为1,2,3,4,5;
45、range()函数还可以设置步长,range(num1,num2,distance):num1,num2代表起始位置和终止位置,distance代表步长(公差);
46、min(digits):找出数字列表digits中的最小元素;
47、max(digits):找出数字列表digits中的最大元素;
48、sum(digits):对数字列表digits中的所有元素求和;
49、列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素;
列表解析实例:squares=[value** 2 for value in range(1,11)]
print(squares)
首先指定一个描述性的列表名,如squares;然后指定一个左方括号,并定义一个表达式,用于生成你要存储到列表中的值。在这个示例中,表达式为value** 2,它计算平方值。接下来,编写for循环,用于给表达式提供值,再加上右方括号。在这个示例中,for循环为for value in range(1,11),它将值1~10提供给表达式value**2.请注意,这里的for语句末尾没有冒号。
最后的结果是:[1,4,9,16,25,36,49,64,81,100]

<切片>
50、List[n,m]:提取列表List的索引为n到(m-1)的元素(切片);
51、切片时,如果没有指定第一个索引,Python将自动从列表开头开始;若没有指定终止的索引,Python将让切片终止于末尾;
52、负数索引返回距离列表末尾相应距离的元素,因此可以输出列表末尾的任何切片;
53、for循环中使用切片就可以遍历列表的部分元素,像"for value in List(:3):"这句for语句就表示遍历List的前三个元素;
54、处理数据时,可以使用切片来进行批量处理;
55、编写web应用程序时,可以使用切片来分页显示信息,并在每页显示数量合适的信息;

56、要复制整个列表,可以创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:]).这让Python创建一个始于第一个元素,终止于最 后一个元素的切片,即复制整个列表
57、有列表L1和L2,若直接令L1=L2,这条语句并不是将L2的值赋给L1,而是让这两个变量关联起来指向同一个列表;


2021.0408

<元组>
58、元组是值不可变的列表;
59、定义元组使用圆括号而不是方括号,但是依旧可以使用索引访问它的元素;
60、遍历的方法与普通列表一样;
61、虽然不能修改元组的元素,但是可以给存储元组的变量赋值;

62、平时写的代码格式要规范,要易于阅读;

<条件测试>
63、每条if语句的核心都是一个值为True或False的表达式,这种表达式称为条件测试;
64、Python中检查是否相等时区分大小写;
65、在Python中使用and关键字将多个测试条件合而为一,即C中的&&;
66、在Python中使用or关键字也可以检查多个条件,即C中的||;
67、判断特定的值是否已包含在列表中时,使用关键字in;
68、判断特定的值是否未包含在列表中时,使用关键字not in;
69、布尔值常用于记录条件,如游戏是否正在运行,或用户是否可以编辑网站的特定内容。在跟踪程序状态或程序中重要的条件方面,布尔值提供了一种高效的 方式;

<if语句>
70、在if语句中,缩进的作用与for循环中的相同,如果测试通过了,将执行if语句之后所有缩进的代码行,否则将忽略它们;
71、if-else语句的使用和C中也差不多,其实就可以把“:”和缩进的语句理解成C中的“{}”和花括号里头的语句;
72、if-elif-else就是C中的if;else if;else语句,不过else if写成了elif;
74、就像C中一样,elif代码块可以根据需要多次使用;
75、Python并不要求if-elif结构后面必须有else代码块;
76、else是一条范围很广的语句,只要不满足任何if或是elif中的条件测试,其中的代码就会执行,这可能会引入无效甚至恶意的数据。如果知道最终要测试 的条件,应考虑使用一个elif代码块来代替else代码块。这样就可以肯定,仅当满足相应条件时,代码才会执行;
77、如果只想执行一个代码块,就使用if-elif-else结构;如果要运行多个代码块,就使用一系列独立的if语句;
78、if List语句可用来判断列表是否为空

79、在条件测试的格式设置方面,PE8提供的唯一的建议是,在诸如==、>=和<=等比较运算符两边各添加一个空格


2021.0410

新概念!!!!!定义存在一个字典,且名为dic

<字典>
80、在Python中,字典对一系列键-值对。每个键都与一个值相关联,可以使用键来访问相关联的值;
81、字典用放在花括号{}中的一系列键值对表示;
82、键值对是两个相关联的值。指定键时,Python将返回与之相关联的值。键和值之间用冒号“:”隔开,而键-值对之间用逗号隔开;
83、要获取与键相关联的值,可依次指定字典名和放在方括号内的键。
84、字典是一种动态结构,可随时在其中添加键-值对。要添加键-值对,可依次指定字典名、用方括号括起的键和相关联的值;
85、键-值对的排列顺序与添加顺序不同,Python并不关心键-值对的添加顺序,而只关心键和值之间的关联关系;
86、要修改字典中的值,可依次指定字典名、用方括号括起来的键以及与该键相关联的新值;
87、对于字典中不再需要的信息,可使用del语句将相应的键-值对彻底删除。使用del语句时,必须指定字典名和要删除的键;
88、字典可以存储一个对象的多条信息,也可存储多个对象的同一类信息;
89、遍历字典中的所有键-值对
for k,v in dic.items():
print("\nKey:" + k)
print(“Value:” + v)
for语句中声明了两个变量k和v,用于存储键-值对中的键和值;
for语句的第二部分包含字典名dic和方法items(),它返回一个键-值对列表,接下来for循环依次将每个键-值对存储到指定的两个变量中;
90、即使遍历字典时,键-值对的返回顺序也与存储顺序不同。Python不关心键-值对的存储顺序,而只跟踪键和值之间的关联关系;
91、遍历字典中的所有键
for k in dic.keys():
print("\nKey:" + k)
方法keys()提取字典dic中所有的键,返回成一个列表,并依次将它们存储到变量k中;
92、要以特定的顺序返回元素,可以在for循环中对返回的键进行排序,为此可以使用函数sorted(),该函数使字典中的键按字母顺序从小到大输出
93、遍历字典中的所有值
for v in dic.values():
print("\nValue:" + v)
方法values()提取字典dic中所有的值,返回成一个列表,并依次将它们存储到变量v中;
这种提取方法,提取所有的值,而没有考虑是否重复;
94、提取值时为了剔除重复项,可以使用集合(set),集合类似于列表,但每个元素都必须是独一无二的;
for value in set(dic.values()):
print(value)

95、经常需要在列表中包含大量的字典,而其中每个字典都包含特定对象的众多信息
96、列表和字典嵌套的层次不应该太多,如果嵌套的层次太多,很可能有更简单的解决问题方案


2021.0410

<用户输入>
97、函数input()让程序暂停运行,等待用户输入一些文本;
98、input()接受一个参数:即要向用户显示的提示或说明,让用户知道该如何做;
例子:
message=input(“Tell me something, and I will repeat it back to you:”)
print(message)
99、每当使用函数input()时,都应该指定清晰而易于明白的提示,准确地指出你希望用户提供什么样的信息;
100、当提示超过一行时,可以将提示语存储在一个变量中,再将该变量传递给函数input(),这样子,即使提示超过一行,input()语句也非常清晰;
101、input()函数输入的文本,不管是字符还是数字,Python都会解读成字符串;
102、int(str_num):将数字的字符串str_num转换为数值表示;
103、输入字符串时,如果是字符串就要打引号,不然会赋值定义出错,数值可以不用;

<while循环>
104、可使用while循环让程序在用户愿意时不断地运行,定义一个退出值,只要用户输入的不是这个值,程序就接着运行;
105、在要求很多条件都满足才能继续运行的程序中,可以定义一个变量,用于判断整个程序是否处于活动状态,True继续进行,False退出;


2021.0411

<函数>

106、使用关键字def老告诉Python要定义一个函数,定义以冒号结尾;
107、在函数定义的冒号之后紧跟的所有缩进代码块构成了函数体;
108、在自定义函数中,可根据需要使用任意数量的位置实参,Python将按顺序将函数调用中的实参关联到函数定义中相应的形参;
109、使用默认值时,在形参列表中必须先列出没有默认值的形参,再列出有默认值的实参。这让Python依然能够正确地解读位置实参;
110、有时候,在定义函数时,需要让实参变成可选的,这样使用函数的人就只需要在必要的时候才提供额外的信息。可以使用默认值来让实参变成可选的;
111、每个函数都应只负责一项具体的工作。编写函数时,如果发现它执行的任务太多,就要尝试将这些代码分到两个函数中,这有助于将复杂任务步骤化;
112、可以用切片表示法[:]创建列表的副本然后再传递给形参,这样函数做任何操作都只影响副本,而不会影响原件;
113、虽然向函数传递列表的副本可保留原始列表的内容,但除非有充分的理由需要传递副本,否则还是应该将原始列表传递给参数,因为让函数使用现成列表 可避免花时间和内存创建副本,从而提高效率,在处理大型列表的时候尤其如此;
114、可向函数传递任意数量的实参:
eg. def make_pizza(toppings):

形参名
toppings中的星号让Python创建一个名为toppings的空元组,并将收到的所有值都封装进这个元组内;
115、如果要让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后。Python先匹配位置实参和关键字实参,再将余下的实参都收 集到最后一个形参中;
116、当需要接受任意数量的实参,但预先不知道传递给函数的是什么信息时,可以将函数编写成键-值对,调用语句提供了多少就接受多少。两个星号可以创建 任意数量的字典**dic,并将函数收到的所有名称-值对都封装到这个字典中;

117、可以将函数存储在被称为模块的独立文件中,再将模块导入到主程序中。import语句运行在当前运行的程序文件中使用模块中的代码;
118、通过将函数存储在独立的文件中,可隐藏程序代码的细节,将重点放在程序的高层逻辑上;
119、将函数存储在独立文件中后,可与其他程序员共享这些文件而不是整个程序,知道如何导入函数还能让你使用其他程序员编写的函数库;
120、模块是扩展名为.py的文件
121、导入特定的函数: 1) from module_name import function_name
2) from module_name import function_0, function_1, function_2…
122、可以使用as给模块、函数指定别名: 1) from module_name import function_name as fn
2) import module as m

123、应该给函数指定描述性名称,且只在其中使用小写字母和下划线,这可以帮助你和别人明白代码想要做什么;
124、每个函数都应该包含简要地阐述其功能的注释,该注释应该紧跟在函数定义后面,并采用文档字符串格式;
125、给形参指定默认值时,等号两边不要有空格,函数调用中的关键字实参也应遵循这种约定;
126、如果程序或模块包含多个函数,可使用两个空行将相邻的函数分开,这样将更容易知道前一个函数在什么地方结束,下一个函数从什么地方开始;
127、所有的import语句都应该放在文件开头,唯一例外的情形是,在文件开头使用了注释来描述整个程序;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值