目录
(1)print函数
(2)注释
(3)input函数
(4)同时赋值和连续赋值
(5)type函数和id函数
(6)python赋值是地址赋值
(7)基本运算符和增强型赋值运算符
(8)科学记数法
(9)类型转换
(10)eval函数
(11)删除变量
(12)一条语句多行显示和多条语句一行显示
(13)dir函数
(14)help函数
(15)os.system函数
(16)输入输出重定向
(17)round函数
(18)ASCII 编码、ord函数和chr函数
(19)统一码
(20)转义序列
(21)用 format 函数格式化数字和字符串
1.格式化整数
2.格式化浮点数
3.格式化为科学计数法形式
4.格式化为百分数形式
5.将十进制数格式化为其他进制数
6.格式化字符串
(22)用%或 format 在字符串里面插入变量值
%用法
format用法
(23)整数不同进制之间的转化
(24)汉字和英文字符比较
长度比较
占用字符个数比较
(25)python2和python3区别
字符串编码区别
除法符号/区别
(26)python设置代码编码方式
(27)字符串编码处理
bytes 函数
decode 和 encode 函数
codecs 模块
(28)排列和组合
(1)print函数
打印一个段落:用三个双引号
print("""锄禾日当午,
汗滴禾下锄。
谁知盘中餐,
粒粒皆辛苦。
""")
end参数:参数 end 的默认值是换行符"\n",即打印内容后自动换行,也可以指定为其它内容
print("AAA", end="x")
print("BBB", end=' ')
print("CCC", end='***')
# AAAxBBB CCC***
print(1, 2, 3) # 1 2 3
print(1, 2, 3, sep="###") # 1###2###3
(2)注释
# 这里是注释内容
''' 注释内容
注释内容
注释内容
'''
注释多行也可以用三个双引号
"""
注释内容
注释内容
"""
快速给多行代码添加和取消注释:ctrl + /。它会给多行代码每行添加#。
(3)input函数
作用:从控制台读取输入。参数为提示内容,返回值为字符串。
string = input("请输入内容:")
radius = eval(input("请输入半径:"))
print(string)
print(radius)
(4)同时赋值和连续赋值
# 1.同时赋值
# 重要应用:交换变量值
x, y, z = 1, 2, 5
print(x, y, z)x, y = y, x
print(x)
print(y)a, b, c = eval(input("请用英文逗号隔开输入三个数字:")) # 2, 4, 7
print(a, b, c)# 2.连续赋值
x = y = 1
print(x, y)
(5)type函数和id函数
type函数:查看变量的类型
id函数:查看变量的内存地址
a = 1
print(type(a)) # <class 'int'>
print(id(a)) # 1387529267504
if type(a) == int: # 类型判断print("a is int")b = 1.0
print(type(b)) # <class 'float'>
if type(b) == float: # 类型判断print("b is float")c = complex(1, 2) # python自带复数类型
print(type(c)) # <class 'complex'>
if type(c) == complex: # 类型判断print("c is complex")d = None
print(type(d)) # <class 'NoneType'>
if d is None: # 类型判断print("d is None")e = [1, 2, 3]
print(type(e)) # <class 'list'>
if type(e) == list:print("e is list")f = {"ZhangSan": 18, "Tom": 19}
print(type(f)) # <class 'dict'>
if type(f) == dict:print("f is dict")
(6)python赋值是地址赋值
以x=y为例,地址赋值的意思就是将y的值赋值x,x的地址值为y的地址
x = 3
y = 3
print(id(x), id(y))
# 2471996909936 2471996909936 # 地址相同value = 100
m = value
n = value
print(id(value), id(m), id(n))
# 2471997101520 2471997101520 2471997101520 # 地址相同lst = [1, 2, 3]
lst1 = lst
lst2 = lst
print(id(lst), id(lst1), id(lst2))
# 2472002138432 2472002138432 2472002138432 # 地址相同
(7)基本运算符和增强型赋值运算符
基本运算符
符号 | 含义 | 举例 |
+ | 加法 | 34+1 |
- | 减法 | 34-1 |
* | 乘法 | 300*10 |
/ | 除法 | 1/2,返回0.5 |
// | 整除 | 1//2,返回0 |
** | 幂 | 4**0.5,返回2 |
% | 取余 | 20%3,返回2 |
增强型赋值运算符,由算术运算符和=组成
以*=为例,i*=8就是i=i*8的简写
x = 1
x += 3
print(x) # 4y = 2
y *= 3
print(y) # 6
(8)科学记数法
x = 1.23456E+2
print(x) # 123.456y = 1.23456E2
print(y) # 123.456z = 1.23E-2
print(z) # 0.0123
(9)类型转换
要转化为什么类型就用什么类型的函数
int函数:取浮点数的整数部分
print(int(5.6)) # 5
print(float(5)) # 5.0
print(int("10", 8)) # 8
print(int("12", 8)) # 10
str函数:转化为字符串
x = 123
ret = str(x)
print(type(ret)) # <class 'str'>
print(ret) # 123
list函数:转化为list
x = (1, 2, 3)
ret = list(x)
print(ret) # [1, 2, 3]y = "abc"
ret = list(y)
print(ret) # ['a', 'b', 'c']
(10)eval函数
eval函数十分强大,参数传入python类型数据的字符串,能主动识别字符串以应该返回什么数据
a = "123"
ret = eval(a)
print(type(ret)) # <class 'int'>
print(ret) # 123b = "3 + 4"
ret = eval(b)
print(type(ret)) # <class 'int'>
print(ret) # 7c = "[5, 6, 7]"
ret = eval(c)
print(type(ret)) # <class 'list'>
print(ret) # [5, 6, 7]d = "{'a': 1, 'b': 'xxxxx'}"
ret = eval(d)
print(type(ret)) # <class 'dict'>
print(ret) # {'a': 1, 'b': 'xxxxx'}
(11)删除变量
语法:del varName
作用:内存回收
num = 1
print(num) # 1del num
print(num) # NameError: name 'num' is not defined
(12)一条语句多行显示和多条语句一行显示
# 一行变多行
# 法一,加反斜号
x = 2
if x % 2 == 1 and \x > 50:print(x)# 法二,加括号
x = 2
if ( x % 2 == 1 andx > 50):print(x)# 多行变一行,用分号
num1 = 1 ; num2 = 4 ; num3 = 5 ; print(num1, num2, num3)
(13)dir函数
作用:查看一个模块或者一个类的所有属性和方法
import math
print(dir(math))
"""
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'nextafter', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc', 'ulp']
"""
(14)help函数
作用:查看一个函数或者方法的详细用法
import os
help(os.path.join)
"""
Help on function join in module ntpath:join(path, *paths)#
(15)os.system函数
作用:运行系统的命令
以windows为例
import os
os.system("calc") # 打开计算器
os.system("notepad") # 打开记事本
os.system("echo mystrxxx") # 打印文本
os.system("task kill /f /im notepad.exe") # 关闭记事本
os.system("task kill /f /im QQ.exe") # 关闭 QQ
# 用代码打开软件
os.system("\"C:\\Program Files (x86)\\Tencent\\WeChat\\WeChat.exe\"")
(16)输入输出重定向
输出:以print函数为例,默认输出到输出设备比如屏幕上
输入:以input函数为例,默认手动从键盘获取输入
输入输出重定向的意思就是改变输出或者输入源
现在我们进行“输入输出重定向”
输入重定向
python 文件名.py < 输入文件名.txt
每次读取一行(只读取一次的话,就是读取第一行的文本/数据)
输出重定向
python 文件名.py > 输出文件名.txt
# 写入文本覆盖 # 若文件不存在则创建一个新文件
python 文件名.py >> 输出文件名.txt
# 追加模式
python 文件名.py < 输入文件名.txt >> 输出文件名.txt
(17)round函数
round(x):将x这个浮点数四舍五入为整数
round(x, n):浮点数小数位四舍五入保留n位
(18)ASCII 编码、ord函数和chr函数
ASCII 编码
- 字符编码的方式有很多
- 流行的编码标准是 ASCII 编码(美国信息交换标准代码),使用 0 到 127 来表示字符,ASCII 一共 128 个
- 对应键盘上的128个符号,每个符号对应一个ASCII值,从0 到 127
- 十进制中,数字 0 的 ASCII 码是 48,字母 A 的 ASCII 码是 65,字母 a 的 ASCII 码是 97
- 任何小写字母的 ASCII 码减去其大写字母的 ASCII 码都是 32
ord函数
ord(ch)来返回字符 ch 的 ASCII 码
chr函数
x = ord('a')
print(x) # 97s = chr(x)
print(s) # ay = ord('A')
print(x - y) # 32
(19)统一码
print("\u6B22") # 欢
print("\u8FCE") # 迎
print("\u3434") # 㐴
汉字 Unicode 编码范围:中文字符集 Unicode 编码范围
(20)转义序列
由\和紧跟着单双引号斜线或者字母的组合被称为转义序列
常用的转移序列有:
- \t 是制表符,就是一个 tab 键,相当于缩进四个空格
- \b 是退格符,在打印时向后退一个空格,作用是将后面那个字符给消除掉了
- \n 是换行符,换行符后的内容将在下一行打印出来
- \"、\'、\\,表示将双引号、单引号或斜线不具有其它的含义,单纯只是符号,而不像字符串双引号具有作用
- 其它转义序列
print("He said, \"John's program is easy to read\"")# 同时使用单引号和双引号,也可起到转义序列的作用
sayHello = '他说:"你好啊"。'
print(sayHello)print("ab\bcd") # "acd"print("\tabcd") # " abcd"print("ab\ncd") # cd 在 ab 的下一行print(r"C:\Users\xxxx\Desktop\tools") # 用 r 解决时,不用输入转义字符# \t 是制表符,默认占 4 个空格大小的位置
s = "11\t2\t3"
print(len(s))
print(s)
print("11xx2xxx3")
'''
6
11 2 3
11xx2xxx3
'''
(21)用 format 函数格式化数字和字符串
interest = 16.404674
interest = round(interest,2)
print(interest) # 16.4
interest = format(interest, ".2f")
print(interest) # 16.40
1.格式化整数
将整数 5 格式化 05 的方法
ret = format(5, "02d")
print(type(ret)) # <class 'str'>
print(ret) # 05
2.格式化浮点数
interest = 16.404674 # interest 是要格式化的浮点数
interest = format(interest, "^10.3f")
print(interest) # " 16.405 "
- <表示左对齐,>表示右对齐,^表示居中对齐,不设置时默认为右对齐
- 10 表示整个字符串占的宽度,不设置时默认为浮点数本身的宽度。如果字符串超过设置的宽度则默认为字符串的宽度,如果不够则自动填充空格。
- 3 表示保留的小数位数
- f表示是格式化浮点数
3.格式化为科学计数法形式
s1 = format(14.6273, "10.2e")
s2 = format(0.0146273, "<10.3e")
print(s1) # " 1.46e+01"
print(s2) # "1.463e-02 "
4.格式化为百分数形式
s1 = format(14.6, "<10.2%")
s2 = format(0.0142, "10.3%")
print(s1) # “1460.00% ”
print(s2) # “ 1.420%”
5.将十进制数格式化为其他进制数
s1 = format(111, "<10b")
s2 = format(111, ">10o")
s3 = format(111, "^10d")
s4 = format(111, ">10x")
print(s1) # “1101111 ”
print(s2) # “ 157”
print(s3) # “ 111 ”
print(s4) # “ 6f”
6.格式化字符串
有时用来统一宽度进而对齐打印很好用
string = "Python is fun"
s1 = format(string, "<20s")
s2 = format(string, ">20s")
s3 = format(string, "^20s")
s4 = format(string, "20s")
print(s1) # “Python is fun ”
print(s2) # “ Python is fun”
print(s3) # “ Python is fun ”
print(s4) # “Python is fun ”
(22)用%或 format 在字符串里面插入变量值
%用法
% 语法
a = 100
b = 297.364
c = 15487.275
mystr1 = "我卖了%d 个商品,每个卖%.2f 元,利润是%.2f 元" % (a, b, c)
print(mystr1)print("hello %% %f" %(10.5)) #
# %%代表输出一个%,为了区别mystr3 = "我卖了%d 个商品,每个卖%-10.2f 元,利润是%10.2f 元"%(a, b, c)
# 默认右对齐,-表示左对齐
print(mystr3)
# 我卖了 100 个商品,每个卖 297.36 元,利润是 15487.27 元mystr4 = "我卖了%d 个商品,每个卖%010.2f 元,利润是%010.2f 元"%(a, b, c)
# 宽度为 10,默认填充空格,设置填充 0
print(mystr3)
# 我卖了 100 个商品,每个卖 0000297.36 元,利润是 0015487.27 元
format用法
a = 100
b = 297.364
c = 15487.275
mystr2 = "我卖了{}个商品,每个卖{:.2f}元,利润是{:.2f}元".format(a, b, c)
print(mystr2)
mystr1 = "中间{:02d}是个数".format(5)
mystr2= "中间{:03d}是个数".format(5)
mystr3= "中间{:0003d}是个数".format(5)
print(mystr1) # 05
print(mystr2) # 005
print(mystr3) # 005
第二种方法:
ret = format(5, "02d")
print(type(ret)) # <class 'str'>
print(ret) # 05
format简化用法:
num = 5
ret = f"这里有{num}个公司"
print(type(ret)) # <class 'str'>
print(ret) # 这里有5个公司
(23)整数不同进制之间的转化
# 在赋值的时候确定进制,在数字前面加 0x,0o,0b
a = 0x10 # 16 进制的 10,就是 10 进制的 10
b = 10 # 10 进制的 10
c = 0o10 # 8 进制的 10
d = 0b10 # 2 进制的 10
print(a, b, c, d, sep = " || ") # 16 || 10 || 8 || 2
print(0b101 + 6) # 11
print(0b101 + 0x12) # 23# 10 进制转为其他进制
print(hex(100)) # 10 进制转换为 16 进制 # 0x64
print(oct(10)) # 10 进制转换为 8 进制 # 0o12
print(bin(10)) # 10 进制转换为 2 进制 # 0b1010
(24)汉字和英文字符比较
长度比较
s1 = "你好"
print(len(s1)) # 2
s2 = "ab"
print(len(s2)) # 2
占用字符个数比较
以存储到txt文为例
print(bytes("我", "utf-8")) # b'\xe6\x88\x91'
print(bytes("我", "gbk")) # b'\xce\xd2'
print(bytes("x", "gbk")) # b'x'
print(bytes("x", "gbk")) # b'x'
(25)python2和python3区别
字符串编码区别
在 python2 中,普通字符串是以 8 位 ASCII 编码进行存储的
在 python3 中,所有字符串都是 Unicode 编码
除法符号/区别
python2中类似c语言是取整,返回除法结果的整数位
python2中就是数学上的除法,返回浮点数
(26)python设置代码编码方式
在代码最方面的第一行加上以下语句
# -*- coding: utf-8 -*-
或者
#coding=utf-8
(27)字符串编码处理
bytes 函数
b = bytes(1) # byte 转化为二进制编码,1 个字节
print("bytes(1) = ", b) # b'\x00'
# \x16 进制 2^4=16 一位数的 16 进制相当于 4 位
# 所以 2 位数 16 进制相当于 8 位 (1 个字节)
print("-"*10)
a = bytes("你 abc", "utf-8")
print(a)
a = bytes("你 abc", "gbk")
print(a) # utf-8 一个汉字占 3 个字符,前面两个字符表示汉字,最后那个字符表示结束
print("-"*10)
print(bytes("我", "utf-8"))
print(bytes("我的", "utf-8"))
print(bytes("我的喔", "utf-8"))# GBK 一个汉字用两个字符表示,没有结束
print("-"*10)
print(bytes("我", "gbk"))
print(bytes("我的", "gbk"))
print(bytes("我的喔", "gbk"))
运行结果
----------
b'\xe4\xbd\xa0 abc'
b'\xc4\xe3 abc'
----------
b'\xe6\x88\x91'
b'\xe6\x88\x91\xe7\x9a\x84'
b'\xe6\x88\x91\xe7\x9a\x84\xe5\x96\x94'
----------
b'\xce\xd2'
b'\xce\xd2\xb5\xc4'
b'\xce\xd2\xb5\xc4\xe0\xb8'
decode 和 encode 函数
print(b'\xce\xd2\xb5\xc4\xe0\xb8')
print(b'\xce\xd2\xb5\xc4\xe0\xb8'.decode("gbk"))# decode 方法,将二进制转化为文本字符串,制定编码格式
print("你好中国".encode("utf-8"))
print(b'\xe4\xbd\xa0\xe5\xa5\xbd\xe4\xb8\xad\xe5\x9b\xbd'.decode("utf-8"))# decode, encode:编码一致,编码不一致时会乱码或者编码出错
# print(b'\xce\xd2\xb5\xc4\xe0\xb8'.decode("utf-8")) # 这里会报错# encode 方法,文本字符串编码为二进制编码
print(type("hello".encode("utf-8")))
print(type(b'\xce\xd2\xb5\xc4\xe0\xb8'.decode("gbk")))# 英文字母,两种编码都可以
# 汉字注意编码的格式# "ignore",解码失败,强行解码
# b 开头是 bytes
print(b'\xe4\xbd\xa0\xe5\xa5\xbd\xe4\xb8\xad\xe5\x9b\xbd'.decode("gbk", "ignore"))# 第一个参数:设置编码
# encoding = "utf-8"
# 第二个参数:默认是'strict',其他有'replace','ignore'
# errors = "ignore"
codecs 模块
import codecsfilename = r"./data/record.txt"
file = codecs.open(filename, "rb", "gbk", "ignore")
name = input("输入要查询的负心人:")n = 0
i = 0for line in file:n += 1if line.find(name) != -1:i += 1print(line)print(f"一共{i}/{n}条")
(28)排列和组合
from itertools import combinations, permutations# 组合 combinations
# 排列 permutationss = "ABCD"
lst = list(s)# 排列
list1 = list(permutations(lst, len(lst))) # 第二个参数为要选取的个数
print(list1)# 组合
list2 = list(combinations(lst, 2))
print(list2)
end