Python从拿起到放下(入门篇)
本系列文章纯干货,无乱七八糟闲言碎语。
关键字
1 | |
表达式与运算符
表达式
赋值语句
变量 = 表达式1
2
3
4
5a = 2
b = 1 + 1
d = e = f = 100
g, h, i = 1, 2, 3is/is not表达式
变量定义接上述代码1
2
3
4print(a is b)
print(d is e)
print(b is d)结果:
1
2
3True
True
Falseid(x)
获取某个变量的iddel
删除变量 del a
比较运算符
< <= > >= == != 返回Bool类型
数值对象的构造函数
- float(obj) 将字符串或者数字转换为浮点数。 输出:
1
2
3b = 2
fb = float(b)
print(fb)2.0
其他类型转换: - int(x=0,base=0)
如:int('101010111',2)表示将二进制的101010111字符串转换为10进制数字输出。
若参数为空,则输出0,无法转换则报异常。 - complex(r=0.0,i=0.0)
用数字创建一个复数。 - bool(x)
创建一个bool类型的值。
内置函数
- abs(x)
取绝对值。 - round(number,digits)
四舍五入,其中digits为正数小数点右边取舍的位数,若为负数则小数点左边舍去的位数。
如:结果:1
2
3
4
5
6
7
8
9
10#注意
print(round(4.4), round(4.5))
print(round(4.4), round(4.51))
print(round(4.14, 0), round(4.15, 0))
print(round(4.14, 1), round(4.15, 1))
print(round(4.14, 2), round(4.15, 2))
#注意
print(round(14.14, -1), round(114.15, -2))注意:四舍五入,需要大于5才进位,等于5不进位。1
2
3
4
5
64 4
4 5
4.0 4.0
4.1 4.2
4.14 4.15
10.0 100.0 - power(x,y,z=None)
等价于x**y或者x**y%z - help(函数名)
查看函数的帮助文档。
如:help(pow)1
2
3
4
5
6
7Help on built-in function pow in module builtins:
pow(x, y, z=None, /)
Equivalent to x**y (with two arguments) or x**y % z (with three arguments)
Some types, such as ints, are able to use a more efficient algorithm when
invoked using the three argument form.
语句
语句是python可执行的最小单位,可以独立执行。
换行
多条语句一行执行,需要以;隔开,通常一条语句一行,复合语句除外。
- 折行符
\换行\折行符反斜杠表示:告诉解析器,下一行的内容也是该行的内容。 - 隐式换行
所有括号的内容换行时候,解析器会自动去下一行找相应的内容,直到找到为止。
输入输出
- 输入input
其中,input中的提示语为可选。结果:1
2x = input("input something,and enter exit.\n")
print(x+'\n')1
2
3input something,and enter exit.
asd
asd - 输入print
格式:print(value,...,sep='',end='')
其中sep为分隔符,end为结束字符串,默认为\n。
分支语句
- if-elif…else语句
自上而下判断,如果有一条语句为True,则结束分支执行,如果所有真值表达式都为False,则执行else中的语句。
elif子语句可以有0、1、多个
else语句可以有0、1个
如下:判断一个整数是正数、负数、还是0且if-elif…else语句可以嵌套
判断一个数字是偶数还是奇数1
2
3
4
5
6
7num = int(input())
if num > 0:
print("正数")
elif num < 0:
print("负数")
else:
print("零")1
2
3
4
5
6# 判断一个数字是偶数还是奇数
num2 = int(input())
if num2 % 2 == 0:
print("偶数")
else:
print("奇数")
pass语句
作用:通常用来填充语法空白。
如:将一个数字转换为它的绝对值。
1 | |
如果我们不写pass填充语法空白,那么程序将会编译错误。
布尔运算
- not
not x,对x进行布尔取非,即先判断x的bool值,然后对取非
如:结果:1
2
3
4
5x = True
y = 2
z = 0
print(x, y, z)
print(not x, not y,not z)1
2True 2 0
False False True - and
x and y,对x、y取与运算,从左到右判断,若遇到False,则返回False。如果都为True,则返回True。
如:结果:1
2
3
4
5
6x = True
y = False
z = True
print(x and y)
print(x and z)
print(y and z)1
2
3False
True
False - or
x or y,对x、y取或运算,从左到右判断,若遇到True,则返回True。如果都为False,则返回False。
如:结果:1
2
3
4
5
6x = False
y = True
z = False
print(x or y)
print(x or z)
print(y or z)1
2
3True
False
True
正负号运算符
+-
真值表达式赋值

如上图,该语句由三个子语句表达式构成,如果前面两个子语句成立,则返回第一个子语句,否则返回第三个子语句。
1 | |
字符串
用单引号'、双引号"、三单引号'''、三双引号"""括起来的都是字符串,用来记录文本信息。
空字符串表示
1
2
3
4''
""
''''''
""""""非空字符串表示
1
2
3
4'hello'
"hello"
'''hello'''
"""hello """单引号和双引号的作用(三单引号和三双引号同样适用)
单引号内的双引号不算开始符、结束符
双引号内的单引号也不算开始符、结束符
二者均作为文本的一部分1
2
3
4s1 = 'abcd"e"'
s2 = "abcd'e'"
print(s1)
print(s2)结果:
1
2abcd"e" 7
abcd'e' 7三双引号可以保留输入文本的原格式
允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。实例如下:1
2
3
4
5
6
7
8#!/usr/bin/python3
para_str = """这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( \t )。
也可以使用换行符 [ \n ]。
"""
print (para_str)以上实例执行结果为:
1
2
3
4
5这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( )。
也可以使用换行符 [
]。三引号让程序员从引号和特殊字符串的泥潭里面解脱出来,自始至终保持一小块字符串的格式是所谓的WYSIWYG(所见即所得)格式的。
隐式字符串
隐式字符串字面值会进行拼接,如:1
2s = "1" '2' '''3''' """4"""
print(s)结果:
1
1234转义字符
\
如:\'表示 一个单引号,其他的如下:转义字符 描述 \(在行尾时)续行符 \\反斜杠符号 \'单引号 \"双引号 \n换行 \a响铃 \b退格(Backspace) \e转义 \000空 \0字符串,值为0 \n换行 \v纵向制表符 \t横向制表符 \r回车 \f换页 \oyy八进制数,yy代表的字符,例如:\o12代表换行 \xyy十六进制数,yy代表的字符,例如:\x0a代表换行 \xXXXX为两位16进制字符 \uXXXXUnicode16 \UXXXXXXXXUnicode32 \other其它的字符以普通格式输出 原生字符串raw
\字符不进行转义,怎么显示,怎么输出。
格式:r"字符串"。1
2
3
4s1 = "1\t234"
print(s1)
s2 = r"1\t234"
print(s2)输出:
1
21 234
1\t234字符串拼接
+拼接+=拼接加*数字n重复拼接n次*=字符串比较
1
2
3
4
5
6>
>=
<
<=
==
!=格式:
x > y
比较规则:- 字符串x的第一个字母与y的第一个字母比较,如果不相同,则直接得出比较结果;如果相同,则再取第二个字母进行比较,以此类推。
- 比较的依据是字符的unicode编码值。
如:结果:1
2
3
4print("a">"b")
print("a">"A")
print("abc">"ab")
print("abc">"acb")1
2
3
4False
True
True
False
innot in运算符
用于在字典、集合、序列等容器中,判断某个值是否存在。
格式:对象 in 序列
如:1
2
3print("a" in 'abc')
print("a" in 'bcd')
print('a' not in "abc")结果:
1
2
3True
False
False字符串索引
index
python的字符串是不可以改变的字符序列。
语法:字符串[整数表达式]
说明:python中的序列都可以用索引来访问其中的对象。
正向索引下标从0开始,第二个是1,最后一个是len(s)-1。
反向索引下标从-1开始,-1代表最后一个,-2代表倒数第二个,第一个是-len(s)如:
1
2s = "hello world!"
print(s[0], s[1], s[-1], s[-2], s[-len(s)], s[len(s) - 1], sep="\n")结果:
1
2
3
4
5
6h
e
!
d
h
!注意:如果超出下标,则报下标越界异常。
切片
slice
从字符串序列中取出相应的元素,重新组成一个字符串序列。
语法:字符串[开始索引:结束索引:(步长,可选)]
说明:- 开始切片是切片切下的位置,0代表第一个元素、1为第二个元素、-1代表最后一个元素,默认是第一个元素。
- 结束索引是切片的终止索引,但不包括终止点,默认是最后一个元素。
- 步长是切片每次获取完当前元素后向右移动索引的跨度,默认为1,步长为正数时,正向切片,步长为复数时,反向切片。
如:
1
2
3
4
5
6
7
8
9
10s = "hello world!"
# 打印字符串1-最后一位
print(s[1:len(s)])
# 打印字符串0-最后一位
print(s[0:len(s)])
# 打印字符串0-最后一位,步长为2
print(s[0:len(s):2])
# 反向打印字符串,步长分别为1和2
print(s[-1:-len(s) - 1:-1])
print(s[-1:-len(s) - 1:-2])结果:
返回序列的最值
- max(x)
- min(x)
编码转换
- ord(c) 返回unicode
- chr(i) 返回i(0-65535)这个值对应的字符
如:
1
2print(ord("浩"))
print(chr(28009))结果:
1
228009
浩数字转换为字符串函数
- hex(i)
- oct(i)
- bin(i)
表达式判断补充
1
2
3
4a = 3
b = 1
c = 2
print(b < a > c)结果:
Ture判断是否是回文字符串
回文即对称的字符串,如1221、12321。
思路一:正向取字符串的前一半,然后反向取字符串的后一半,判断二者是否相等,如果相等,则为回文字符串。1
2
3
4
5
6
7
8
9
10
11
12s = "上海自来水来自海上"
i = 0
# 偶数,取长度/2个字符串
if (len(s) % 2) == 0:
i = len(s) // 2
# 奇数,取长度/2+1个字符串
else:
i = len(s) // 2 + 1
s1 = s[0:i]
s2 = s[-1:-i - 1:-1]
print(s1, s2, sep="\n")
print(s1 == s2)结果:
1
2
3上海自来水
上海自来水
True思路二:将字符串反向输出,然后和原字符串比较,是否相等,如果相等则为回文字符串。
字符串运算符整理
下表实例变量 a 值为字符串 “Hello”,b 变量值为 “Python”:操作符 描述 实例 +字符串连接 >>>a + b'HelloPython'*重复输出字符串 >>>a * 2'HelloHello'[]通过索引获取字符串中字符 >>>a[1]'e'[:]截取字符串中的一部分,左闭右开区间 >>>a[1:4]'ell'in成员运算符-如果字符串中包含给定的字符返回True >>>"H" in aTruenot in成员运算符-如果字符串中不包含给定的字符返回True >>>"M" not in aTruer/R原始字符串-原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母 "r"(可以大小写)以外,与普通字符串有着几乎完全相同的语法。>>>print r'\n'\n>>> print R'\n'\n具体示例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19a = "Hello"
b = "Python"
print("a + b 输出结果:", a + b)
print("a * 2 输出结果:", a * 2)
print("a[1] 输出结果:", a[1])
print("a[1:4] 输出结果:", a[1:4])
if "H" in a:
print("H 在变量 a 中")
else:
print("H 不在变量 a 中")
if "M" not in a:
print("M 不在变量 a 中")
else:
print("M 在变量 a 中")
print(r'\n')
print(R'\n')以上程序执行结果为:
1
2
3
4
5
6
7
8a + b 输出结果: HelloPython
a * 2 输出结果: HelloHello
a[1] 输出结果: e
a[1:4] 输出结果: ell
H 在变量 a 中
M 不在变量 a 中
\n
\n字符串格式化
Python支持格式化字符串的输出。在Python中,字符串格式化使用与C语言函数一样的语法。
如:1
print("I am %s,and I am %d years old." % ("leehao", 23))输出结果为:
1
I am leehao,and I am 23 years old.python 字符串格式化符号:
符 号 描述 %c格式化字符及其 ASCII码%s格式化字符串 %d格式化整数 %u格式化无符号整型 %o格式化无符号八进制数 %x格式化无符号十六进制数 %X格式化无符号十六进制数(大写) %f格式化浮点数字,可指定小数点后的精度 %e用科学计数法格式化浮点数 %E作用同 %e,用科学计数法格式化浮点数%g%f和%e的简写%G%F和%E的简写%p用十六进制数格式化变量的地址 格式化操作符辅助指令:
符号 功能 *定义宽度或者小数点精度 -用做左对齐 +在正数前面显示加号(+) <sp>在正数前面显示空格 #在八进制数前面显示零 ('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')0显示的数字前面填充 '0'而不是默认的空格%'%%'输出一个单一的'%'(var)映射变量(字典参数) m.n.m是显示的最小总宽度,n是小数点后的位数(如果可用的话)示例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24# %c 格式化字符及其ASCII码 范围0~0x110000
print("%c" % 0x55)
# % s 格式化字符串
print("i am %s" % "leehao")
# % d 格式化整数
print("i am %d years old." % 23)
# % u 格式化无符号整型 2.7以后的版本%u同%d
print("the number is %u ." % -23)
# % o 格式化无符号八进制数
print("the number %d is %o in 8th" % (23, 23))
# % x 格式化无符号十六进制数
print("the number %d is %x in 16th" % (23, 23))
# % X 格式化无符号十六进制数(大写)
print("the number %d is %X in 16th" % (23, 23))
# % f 格式化浮点数字,可指定小数点后的精度,'.2'表示小数点后2位
print("the number is %.2f " % 123.457)
# % e 用科学计数法格式化浮点数,其中'.2'表示小数点后精度为2
print("the number is %.2e " % 123.457)
# % E 作用同 % e,用科学计数法格式化浮点数
print("the number is %.3E " % 123.457)
# % G、% g 。根据值的大小采用%e或%f,但最多保留6位有效数字
print("the number is %g" % 2123.459987)
# % p 用十六进制数格式化变量的地址 0x70上述程序运行结果如下:
1
2
3
4
5
6
7
8
9
10
11U
i am leehao
i am 23 years old.
the number is -23 .
the number 23 is 27 in 8th
the number 23 is 17 in 16th
the number 23 is 17 in 16th
the number is 123.46
the number is 1.23e+02
the number is 1.235E+02
the number is 2123.46f-string
f-string 是 python3.6 之后版本添加的,称之为字面量格式化字符串,是新的格式化字符串的语法。
f-string 格式话字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去。
用了这种方式明显更简单了,不用再去判断使用 %s,还是 %d。
在 Python 3.8 的版本中可以使用 = 符号来拼接运算表达式与结果。
如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14name = 'Runoob'
s1 = f'Hello {name}'
print(s1)
s2 = f'{1 + 2}'
print(s2)
w = {'name': 'Runoob', 'url': 'www.runoob.com'}
s3 = f'{w["name"]}:{w["url"]}'
print(s3)
x = 1
print(f'{x+1}') # Python 3.6
print(f'{x+1=}') # Python 3.8上述程序运行结果如下:
1
2
3
4
5
6Hello Runoob
3
Runoob:www.runoob.com
2
x+1=2