Python知识整理(一)
一、Python交互模式(终端上进行)
python # 进入到Python交互模式,提示符是 >>>
exit() # 退出Python交互模式
python xxx.py # 执行名为xxx的python文件,注意要先使用cd指令切换到xxx.py所在目录下
e.g:
>>> 2**10 #2**10 == 2^{10}
>>> 1024
二、Python基本语法
1.输出
print()
e.g: print('hello , world')
print('The quick brown fox', 'jumps over', 'the lazy dog')
#print函数可以接受多个字符串,并依次打印每个字符串,遇到逗号“,”输出一个空格
#字符串的相关输出格式,见后字符串部分
#print函数也可以打印整数或计算结果
print(300)
print(100+200)
print('100 + 200 =', 100+200)
2.输入
(变量名) = input()
e.g:
name = input()
#我们输入内容将存至name变量中,在交互模式下我们可以直接输入name,就可以查看name变量中的值啦,当然我们也可以通过print()函数来查看,即:
print(name)
#input()返回的数据类型为str
#当时两种方式还是有区别的,见下图
3.基础常识
# # -- 注释,相当于C++中的‘//’
# : -- 语句以冒号:结尾时,缩进的语句视为代码块,相当于C语言中的{},通常是以4个空格为一次缩进,即一个tab键
# import math == include <cmath>
# 另外,Python是大小写敏感的,这点需要注意
4.数据类型
1.整数--Python可以处理任意大小的整数,高精度!
注意:Python的整数没有大小限制,而某些语言的整数根据其存储长度是有大小限制的,例如Java对32位整数的范围限制在
-2147483648
-2147483647
。Python的浮点数也没有大小限制,但是超出一定范围就直接表示为
inf
(无限大)。
2.浮点数--1.23、1.23e9==1.23*10^9
整数运算永远是精确的(除法也是精确的!),而浮点数运算则可能会有四舍五入的误差。
3.字符串--单引号‘和双引号“括起来的文本
(1)在字符串中若包含单/双引号,需采用转义字符‘\’来标识。
e.g:
'I\'m OK!!' --> I'm OK!!
#r'xxxxx' -->表示‘’内部字符串默认不转义
e.g:
>>> print('\\\t\\')
\ \
>>> print(r'\\\t\\')
\\\t\\
(2)Python允许用'''...'''的格式表示多行内容
print('''line1
... line2
... line3''')
line1
line2
line3
#在交互式命令行内输入,注意在输入多行内容时,提示符由>>>变为...,提示你可以接着上一行输入,注意...是提示符,不是代码的一部分
len()--计算字符串所占字符/字节数
(3)字符串的编码(了解)
(4)字符串的格式化
常见的占位符有:
占位符 替换内容 %d 整数 %f 浮点数 %s 字符串 %x 十六进制整数 其实还有比如指定是否补零与整数、小数的位数。如
%02d
、%.2f
。>>> 'Hello, %s' % 'world' 'Hello, world' #只有一个%?时,括号可省略 >>> 'Hi, %s, you have $%d.' % ('Michael', 1000000) 'Hi, Michael, you have $1000000.' #特别的,若字符串中‘%’是一个普通字符,我们需采用‘%%’来表示% >>>'growth rate: %d %%'%7 'growth rate: 7 %'
(了解)另一种格式化字符串的方法是使用字符串的
format()
方法,它会用传入的参数依次替换字符串内的占位符{0}
、{1}
……,不过这种方式写起来比%要麻烦得多:>>> 'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125) 'Hello, 小明, 成绩提升了 17.1%'
最后一种格式化字符串的方法是使用以
f
开头的字符串,称之为f-string
,它和普通字符串不同之处在于,字符串如果包含{xxx}
,就会以对应的变量替换:>>> r = 2.5 >>> s = 3.14 * r ** 2 #3.14*(r^2) >>> print(f'The area of a circle with radius {r} is {s:.2f}') The area of a circle with radius 2.5 is 19.62
4.布尔值--True、False
可以进行 or(或)and(与)not——(非)运算
5.空值-->None,不能理解为0
6.变量与常量
变量命名规则与C语言类似,需要注意的是Python是动态语言,因此无需指定类型。
常量通常用全大写表示** --> 幂运算 // -->地板除,只保留除法商的整数部分
7.列表list
>>> classmates = ['Michael','Bob','Tracy']
#len()可以获得list元素对个数
>>> len(classmates)
3
#可以用下标索引的方式来访问list中的元素,类似c语言的数组,下标从0开始,到len(classmates)-1结束
>>> classmates[0]
'Michael'
#当然,我们可以通过-1来获取最后一个元素
>>> classmates[-1]
#类似的-2、-3,但我们仍需要注意范围。
#list是个可变的有序表,因此可以向list中追加元素至末尾,也可以插入指定位置,当然也可以进行删除。
>>> classmates.append('Adam')
>>> classmates.insert(1,'Jack')
>>> classmates.pop()
>>> classmates.pop(1)
>>> classmates[1]='Sarah'
#list的元素数据类型可以不相同,也可以一个list包含其他list,这点不同于数组。
>>> s = ['python', 'java', ['asp', 'php'], 'scheme']
>>> len(s)
4
#而若要取到s中元素list里的元素,我们需采用s[2][0]、s[2][1]的方式,类似于二维数组,三维、四维...不常用
#list还可以为空
>>> L = []
>>> len(L)
0
8.元组tuple
tuple和list最大的不同就是,list是可变的,而tuple初始化后就无法进行修改了。
>>> classmates = ('Michael', 'Bob', 'Tracy')
取元素和list一样。可以用下标去访问。因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。同样,也可以定义一个空的tuple。特别地,定义只有一个元素的tuple是需采用
t=(1,)
的形式,如果是t=(1)
的话,其结果是数字1。当然,tuple中的元素类型可以为list,如果是这样list中的元素是可变的。
9.字典dict--类比于C语言中的map
使用键-值(key-value)方式存储。
>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85} >>> d['Michael'] 95 #把数据放入dict的方法,除了初始化时指定外,还可以通过key放入 >>> d['Adam'] = 67 >>> d['Adam'] 67 #要避免key不存在的错误,一是通过in判断key是否存在,二是通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value。 >>> 'Thomas' in d False >>> d.get('Thomas') >>> d.get('Thomas', -1) -1 #删除一个key >>> d.pop('Bob') #请务必注意,dict内部存放的顺序和key放入的顺序是没有关系的。并且,key应为不可变对象,故不可采用list数据类型
10.集合set--类比于C语言中的set
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。重复元素在set中自动被过滤。
要创建一个set,需要提供一个list作为输入集合:
>>> s = set([1, 2, 3]) >>> s {1, 2, 3}
还可以采用
add(key)
方法添加元素、remove(key)
方法删除元素。>>> s.add(4) >>> s {1, 2, 3, 4} >>> s.remove(4) >>> s {1, 2, 3}
set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集&、并集|等操作。
set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。
5.基础结构
1.条件判断
if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>
if x: #如果x为非零值
if
语句执行有个特点,它是从上往下判断,如果在某个判断上是True
,把该判断对应的语句执行后,就忽略掉剩下的elif
和else
。
2.循环
(1)for...in循环
依次把list或tuple中的每个元素迭代出来。
names = ['Michael', 'Bob', 'Tracy'] for name in names: print(name)
Python提供一个
range()
函数,可以生成一个整数序列,再通过list()
函数可以转换为list。>>> list(range(5)) [0, 1, 2, 3, 4]
(2)while循环
while xxx: xxxxx
(3)break--提前结束循环
(4)continue--提前结束本轮循环,并直接开始下一轮循环。
3.函数
python内置了很多函数,如
max(x1,x2,x3,...)
、abx(x)
。def 函数名(参数): 函数体--具体功能实现 return x,y #Python可以返回多个值,Python的函数返回多值其实就是返回一个tuple def nop(): #空函数 pass #占位符,什么也不做,相当于c语言的{}
参数部分了解位置参数、默认参数(默认参数必须指向不变对象!)、可变参数(*numbers)--tuple、关键字参数(**kw)--dict、命名关键字参数(*)--命名关键字参数必须传入参数名。
*args
是可变参数,args接收的是一个tuple;
**kw
是关键字参数,kw接收的是一个dict。