注释规则:
1、单行注释:
“#”做为当行注释的的符号,直接在#号跟上要注释的内容。
2、多行注释:
使用三引号'''......'''作为多行注释的注记或者使用六引号''''''......''''''。
命名规范:
1、模块名尽量短小,全部使用小写字符,用下划线来分隔每个单词;
2、包名尽量短小,全部用小写字符且不用下划线;
3、类名采取首字母大写的形式;
4、模块内部的类在类名前加下划线_;
5、函数与类的属性的命名规范同模块;
6、常量全部用大写字母。
基本输入输出:
基本输入函数input():
使用input()函数可以接受用户的键盘输入。
variable = input("要输入的内容:")
"..."用来表示内部是一个字符串类型的数据;(...)用来接收参数;variable用来存储输入的内容是一个变量。
若想要传输数值类型的值需要进行显示转换,如下文所示代码(在python3.x版本)
variable = int(input("要输入的数值型:"))
基本输出函数print():
使用print()函数可以将结果输出。
print(数值型)
print('字符串型')
若想要一条语句输出多个内容且不换行(python中print输出默认换行),用英文“,”隔开要输出的内容即可。
运算符:
算数运算符:
+,-,*,/:加减乘除运算符,不再赘述,注意此处的/不是C里面的整除,就是单纯的÷;
%:求余运算符,用来取余数;
//:整除运算符;
**:幂运算符,如2**4表示的是2^4为16。
赋值运算符:
=:将右值赋值给左值;
x +=,-=,*=,/=,%=,**=,//= y:结果均为x = x运算符y
关系运算符:
返回值只有True与False两种情况。
>,<,==,!=,>=,<=:不再赘述。
逻辑运算符:
and,or,not:与,或,非运算符,不赘述。
位运算:
&:按位与;
|:按位或;
^:按位异或;
~:按位取反;
<<:按位左移,相当于乘2;
>>:按位右移,相当于÷2。
运算优先级:
从高到低排序:
**;幂运算
~,+,-;按位取反,正负号
*,/,//,%;乘,除,整除,取余
+,-;加减
<<,>>;左移右移
&;按位与
^;异或
|;按位或
<,>,<=,>=,!=,==。比较运算符
流程控制语句:
顺序结构(不赘述),选择结构(if),循环语句。
选择语句:
if语句:
if 表达式:
语句块
表达式:单纯的布尔值或者是返回值为布尔值的函数;(表达式中为非零的数或者字符串时默认为真。)
语句块:当if的条件为真时,下一步要执行的语句。否则直接跳过该语句块。
注:表达式后一定要加:,且要注意有多条语句时的语句块缩进是否一致。
if...else语句:
if 表达式:
语句块1
else:
语句块2
当不满足表达式内容为真时,执行else下的语句块。
注:else语句一定不能单独使用,else会根据缩进去匹配if。
if...elif...else语句:
if 表达式1:
语句块1
elif 表达式2:
语句块2
elif 表达式3:
语句块3
else:
语句块4
类似于c中的switch。
当满足一种条件便执行,若都不满足,则执行else。(类似于default)
条件语句的嵌套此处不赘述。
循环语句:
在循环中,想要让print语句在同一行中显示,不能直接加上逗号,需要加上“,end = '分隔符' ”。
while语句:
先判断循环条件是否成立再决定是否进入循环体。
while 条件表达式:
循环体
for语句:
一种计次循环,适合用于循环次数已知的循环。
for 迭代变量 in 对象:
循环体
迭代变量:用来保存读取出的值;
对象:要遍历或迭代的对象,可以是字符串,列表,元组等。
1、计数循环:
可能要用到range(start,end,step)函数。
start:用于指定计数的起始值;end:用于指定结束值,但不包括该值;step:用于指定步长。
当range()函数中只有一个参数时,即表示指定计数的结束值。
range(101) #表示0-100
2、遍历字符串:
使用for循环除了能进行计数循环外,还可以逐个遍历字符:
string = '别再说我不能'
print(string) #横向显示
for ch in string:
print(ch) #纵向显示
break、continue和pass语句:
break语句:
一般结合if语句使用,用来提前终止循环:
while 条件1:
语句块1
if 条件2:
break
语句块2
continue语句:
没有break语句那么强大,用来终止本次循环提前进入下一次循环。与break类似,也需要与if语句一起使用。
while 条件1:
语句块1
if 条件2:
continue
语句块2
pass语句:
空语句,不做任何事情,用作占位作用,一般用在未考虑好代码要如何执行时,使用pass语句来给它提前占好位置。
如使用for循环输出1-10中为偶数的值,未想好奇数有何用处,在不是偶数时可以用pass语句来占位。
for i in range(1,11):
if i % 2 == 0:
print(i, end = ' ')
else:
pass
列表与元组:
序列概述:
在Python中,序列结构主要有列表、元组、集合、字典和字符串,对于这些序列结构,有以下几个通用操作,其中集合和字典不支持索引、切片、相加和相乘操作。
1.1 索引(Indexing):
序列中的每个元素都有一个编号,也称为索引(Indexing)。这个索引是从0开始递增的,下标0为第一个元素。
Python中的索引有一个特别之处在于其索引可以为负数,这个索引从右往左计数,也就是从最后一个元素开始计数,即最后一个元素的索引为-1。
1.2 切片(Slicing):
切片操作是访问序列中元素的另一种方法,可以访问一定范围内的元素。通过切片操作可以生成一个新的序列。语法格式如下:
sname[start:end:step]
sname:表示序列名称;
start:表示切片开始的位置,包括该位置,默认为0;
end:表示切片的截止位置,不包含该位置,若不指定,默认为序列的长度;
step:表示切片的步长,默认为1,当省略步长时,最后一个冒号可以省略。
注:若要复制整个序列,start和end都可以省略,当中间的:要保留,格式如下。
verse[:]
# 表示要复制整个名称为verse的序列。
1.3 序列相加(连接):
在python中,使用“+”号可实现将两种相同类型的序列相加(adding)操作,即将两个序列想连接,但不去除其中重复的元素。
1.4 乘法(Multiplying):
使用数字n乘以一个序列会生成一个新的序列,新序列的内容为原来序列的内容重复n次的结果;
在初始化序列的时候也可以使用。
具体格式如下:
# 输出5次verse
verse = [1,2,3]
print(verse * 5)
# 创建一个长度为5的列表,列表的每个元素的值为None
verse = [None] * 5
1.5 检查某个元素是否为序列的成员:
在Python中可以使用in关键字来检查某个元素是否为序列的成员,即检查某个元素是否包含在该序列中。语法格式如下:
value in sequence
value为要查找的某个元素,sequence为要查找的序列;其返回值为布尔类型的值(True or False)
若要查找某个元素是否不在该序列中,使用not in关键字。
1.6 计算序列的长度、最大值和最小值:
在Python中提供了计算序列长度、最大值、最小值的内置函数,分别为len(),max(),min()。max(),min()用来返回序列中的最大与最小的元素。
verse = [1,2,3,4]
length = len(verse)
themax = max(verse)
themin = min(verse)
1.7 其它的内置函数(均不会改变原序列):
list():将序列转换为列表;
str():将序列转换为字符串;
sum():计算序列的元素和;
sorted():对元素进行排序(升序);
reversed():反序序列中的元素;
enumerate(): 将序列组合成一个索引序列,多用在for循环中。
列表(List):
列表中地所有元素都放在[]内部,两个相邻的元素使用逗号隔开,内容上可以将任何类型的内容放入列表中,且同一个列表,元素的类型可以不同。
2.1 列表的创建与删除:
1、直接使用幅值运算符创建列表:
listname = [element1, element2, element3]
listname为列表名,element为列表元素
2、创建控列表:
listname = []
3、创建数值列表:
使用list()函数直接将range()函数循环出来的结果转换为列表。(range函数在循环结构中已经提及,此处不再赘述)
num = list(range(101))
print(num)
4、删除列表:
对于已经创建的列表,可以使用del语句将其进行删除,语法如下:
del listname
注:在删除列表前,一定要确保列表名是已经存在的。
2.2 访问列表元素:
使用前文中提到的索引(Indexing),语法如下:
# num中的第二个元素对应索引为1的位置
a2 = num[1]
2.3 遍历列表:
遍历列表式一个非常基础的操作,其在完成查询、处理等功能中是一个十分重要的组成部分,下文介绍两种基础遍历方法:
1、直接使用for循环语句:
for item in listname:
循环体
直接使用for循环遍历时看不到索引值;
2、使用for循环和enumerate()函数实现:
for index, item in enumerate(listname):
循环体
index用来保存索引值,item用来保存元素值。
2.4 添加、修改和删除列表元素:
1、添加元素:
使用append(obj)函数可以在指定列表的末尾位置添加元素,语法如下:
listname.append(obj)
使用insert(index, obj)函数可以在指定列表的指定索引位置添加元素,语法如下:
listname.insert(index, obj)
上文介绍的均是插入单个元素的,下文介绍将一个列表的全部元素添加到另一列表中的方法:
使用extend(seq)函数实现,语法如下:
listname.extend(seq)
seq为要添加的列表,语句执行后,seq内部的全部元素会被添加到listname列表的末尾。
2、修改元素:
在列表中修改元素只需要使用索引将该索引位置处的元素重新赋值即可。
3、删除元素:
存在两种情况,一种是通过索引删除,另外一种是通过元素值删除。
1、根据索引删除:
与删除列表的方式相同,可以使用del语句删除单个元素,不同之处在于将listname更换为listname[index]即可。
2、根据元素值删除:
如果想要删除一个位置不确定的元素(即根据元素值删除),可以使用列表对象的remove()方法,语法如下:
num = [1,2,3,4]
num.remove(1)
注:在使用这种删除方式时,一定要确保该元素在列表中确实存在否则会报错,且如果列表中存在重复元素也仅仅只删除第一个遇到的。
2.5 对列表进行统计计算:
1、获取指定元素出现的次数:
使用count(obj)函数可以获取指定元素在列表中出现的次数。语法如下:
listname.count(obj)
2、获取指定元素首次出现的下标:
使用index(obj)函数可以获取元素首次出现的下标位置。
listname.index(obj)
3、统计数值列表的元素和:
使用sum(iterable[,start]) 函数可以获取数值列表的元素和,[,start]的意思表面这个参数可以不存在,默认为0。语法如下:
num = list(range(101))
print(sum(num))
iterable为要统计的列表。
2.6 对列表进行排序:
1、使用列表对象的sort()方法:
排序后原列表中的元素顺序将发生改变,语法格式如下:
listname.sort(key = None, reverse = False)
key表示从每个列表中提取出的比较键,默认区分字母大小写,若要不区分,key = str.lower;reverse为可选参数,None为升序排列,True为降序排列。
2、使用内置的sorted():
使用该函数排序后,原列表的序列是不发生变化的,需要生成一个新的列表用于存储排序后的结果。
sorted(iterable, key = None, reverse = False)
2.7 列表推导式:
几种常用语法:
1、生成指定范围的数值列表:
list = [Expression for var in range]
list为生成的列表名称;Expression为表达式,用于计算新列表的元素;var为循环控制变量;range为使用range()函数生成的range对象。
例子:生成一个包括10个随机数的列表,要求数的范围在10~100(包括100),具体代码如下:
import random
randomnumber = [random.randint(10,100) for var in range(10)]
for var in randomnumber:
print(var, end = ' ')
2、根据列表生成指定需要的列表:
语法格式如下:
newlist = [Expression for var in list]
例如:定义个商品的价格列表,由该列表生成一个所有商品打五折的列表:
prices = [100, 200, 300, 400, 500]
DISCOUNT = 0.5;
newprices = [int(price * DISCOUNT) for price in prices]
print('原价为:', prices)
print('现价为:', newprices)
3、从列表中选择符合条件的元素生成新的列表:
newlist = [Expression for i in list if condition]
condition表示条件表达式,用于指定筛选条件。
例子:
prices = [100, 200, 300, 400, 500]
DISCOUNT = 0.5;
newprices = [int(price * DISCOUNT) for price in prices]
conditionprices = [price for price in newprices if price<200]
print('原价为:', prices)
print('现价为:', newprices)
print('符合条件的价格为:', conditionprices)
2.8 二维列表:
二维列表中的信息以行和列的形式存在 ,第一个下标表示行,第二个下标表示列。
创建二维列表有三种常用方式:
1、直接定义二维列表:
二维列表可以认为是列表的列表,即将一维列表作为元素储存在另一个列表中。
语法定义如下:
listname =[[element11, element12],
[element21, element22]]
其中的一维列表是按行存储的,可以类似于数组的二维数组进行理解,有兴趣可以查看我写过的数组笔记。
2、使用嵌套的for循环创建:
语法定义如下:
n = input()
m = input()
arr = []
for i in range(int(n)):
arr.append([])
for j in range(int(m)):
arr[i].append(int(input()))
print(arr)
从键盘的输入默认为str类型,而range函数只能接受int类型,所以要进行类型转换。思路是先创建一个空列表,然后先往空列表中插入一个空列表,并往该空列表中填入值,完成这两步后再插入另一个空列表重复上述操作,直至满足循环条件。
3、使用列表推导式创建(推荐):
回顾列表推导式的定义:
newlist = [Expression for var in range or list]
那么应该如何用列表推导式来创建一个二维列表呢?
思路如下:
首先二维列表可以看做是一个列表中存储着一维列表的形式,因此行为var,列应该为Expression。
例子如下:
# 创建一个4行5列的列表
arr = [[j for j in range(5)] for i in range(4)]
实际上有一个包叫做numpy使用它我们可以很轻易地定义出想要的列表形式,之后会另开一文介绍numpy。
函数的编写:
def关键字:表示开始定义函数
def 函数名(形参):
# 接下来是一些函数定义的代码
函数体
# 若要在函数外使用该函数里的内容,使用return语句
陆续更新,有需要可以收藏。