[TOC]
1. print()
函数
换行打印:
print('helloworld') # 输出字符
print(33) # 输出数字
print(3 + 1) # 输出表达式
print("hello", "word") # 不换行输出
ft = open("D:/test.txt", "a+") # a+表示追加输入
print("helloword", file=ft) # 将输出存储到指定目录
输出:
helloworld
33
4
hello word
2. Python关键字
import keyword
print(keyword.kwlist) # python 关键字
输出:
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue',
'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is',
'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
3. 定义变量&变量的地址和值
name = "张三"
print("变量地址:", id(name))
print("变量类型:", type(name))
print("变量值:", name)
输出:
变量地址: 2008011485136
变量类型:
变量值: 张三
4. 常用的数据类型
# 常用数据类型
value1 = 98
print("变量类型:", type(value1)) # int
value2 = 3.14159
print("变量类型:", type(value2)) # float
value3 = True
print("变量类型:", type(value3)) # bool
value4 = "你好"
print("变量类型:", type(value4)) # str
4.1 整数型进制
print("十进制:", 108) # 108
print("二进制:", 0b10101101) # 二进制0b开头
print("八进制:", 0o1272) # 八进制 0o开头
print("十六进制:", 0x12FE31) # 十六进制 0x开头
输出:
十进制: 108
二进制: 173
八进制: 698
十六进制: 1244721
4.2 浮点数计算不准确
from decimal import Decimal
f1 = 1.1
f2 = 2.2
print("不准确结果:", f1+f2) # 计算不准确
print("准确结果:", Decimal("1.1") + Decimal("2.2")) # 计算准确,用字符相加,不能用浮点数
输出:
不准确结果: 3.3000000000000003
准确结果: 3.3
4.3 浮点数可以进行整数运算
F1 = True; # = 1
F2 = False; # = 0
print(F1+1) # 2
print(F2+1) # 1
4.4 字符类型输入格式
# 单引号,只能在一行输入
str1 = 'hello world'
# 双引号,只能在一行输入
str2 = "hello world"
# 三引号,可以在多行输入
str3 = '''hello
world'''
print("str1:", str1)
print("str2:", str2)
print("str3:", str3)
输出:
str1: hello world
str2: hello world
str3: hello
world
4.5 类型转换
Python中不同类型的值不能使用+
进行数据拼接,,需要用str()
,int()
,float()
进行数据拼接。
s = "178"
i = 138
f = 122.88
b = True
print("value: ", str(s), "类型:", type(str(s)))
print("value: ", str(i), "类型:", type(str(i)))
print("value: ", str(f), "类型:", type(str(f)))
print("value: ", str(b), "类型:", type(str(b)))
print('----------int-----------')
print("value: ", int(s), "类型:", type(int(s)))
print("value: ", int(i), "类型:", type(int(i)))
print("value: ", int(f), "类型:", type(int(f)))
print("value: ", int(b), "类型:", type(int(b)))
print('-----------float----------')
print("value: ", float(s), "类型:", type(float(s)))
print("value: ", float(i), "类型:", type(float(i)))
print("value: ", float(f), "类型:", type(float(f)))
print("value: ", float(b), "类型:", type(float(b)))
输出:
value: 178 类型:
value: 138 类型:
value: 122.88 类型:
value: True 类型:
----------int-----------
value: 178 类型:
value: 138 类型:
value: 122 类型:
value: 1 类型:
-----------float----------
value: 178.0 类型:
value: 138.0 类型:
value: 122.88 类型:
value: 1.0 类型:
其中要特别注意:
s1 = "178.8" # 不能转换成int
s2 = "sdf" # 不能转换成int 和 float
f2 = 178.8 # 转换成int 为178
5. 注释
写在开头,表示python文件的编码方式:
# coding:utf-8
多行注释:
'''
我是多行注释
嘿嘿嘿
'''
6. input()
输入函数
可以让用户输入类容的函数,返回结果是str
类型。
result = input("请输入一个数字:")
print("结果:", result, "类型:", type(result))
输出:
请输入一个数字:10
结果: 10 类型:
7. 运算符
7.1 算数运算符
print(1 + 1) # 2 加法
print(1 - 1) # 0 减法
print(3 * 5) # 15 乘法
print(11 / 2) # 5.5除法
print(11 // 2) # 5 整除
print(11 % 2) # 1 取余
print(2 ** 3) # 8 幂运算
特别注意:
7.1.1 除法和整除、幂运算
print(10/3) #3.3333333333333335 结果有误差
print(11 / 2) # 5.5除法
print(11 // 2) # 5 整除
print(2 ** 3) # 8 幂运算
7.1.2 整除遇到正负时,向下取整
print(9 // 4) # 2
print(-9 // -4) # 2
print(9 // -4) # -3 向下取整!
print(-9 // 4) # -3 向下取整!
7.1.3 取余计算公式
取余计算公式为:
print(9 % 4) # 1 ----> 1 = 9 - (4 * 2)
print(-9 % -4) # -1 !!!!!! ----> -1 = -9 - (-4 * 2)
print(9 % -4) # -3 !!!!!!! ----> -3 = 9 - (-4 * -3)
print(-9 % 4) # 3 !!!!!!!!! ----> 3 = -9 - (4 * -3)
7.2 赋值运算符
赋值运算符的顺序是从右到左。
a = 1+1
print(a, "type: ", type(a))
输出:
2 type:
7.2.1 链式赋值
链式赋值的结果是指向地址都一样,但是计算后,会赋予它新的地址:
a=b=c=10
print(a, "地址:", id(a))
print(b, "地址:", id(b))
print(c, "地址:", id(c))
print("----------------")
a=a/2
print(a, "地址:", id(a))
print(b, "地址:", id(b))
print(c, "地址:", id(c))
输出:
10 地址: 1724792832528
10 地址: 1724792832528
10 地址: 1724792832528
----------------
5.0 地址: 1724793866096
10 地址: 1724792832528
10 地址: 1724792832528
经过计算后,a的地址改变了。
7.2.2 参数赋值
a = 5
a += 2 # 等于 a = a + 2
print(a) # 7
7.2.3 解包赋值
a,b,c = 20.1,30,40.1
print(a, "类型:", type(a))
print(b, "类型:", type(b))
print(c, "类型:", type(c))
输出:
20.1 类型:
30 类型:
40.1 类型:
7.3 比较运算符
a, b = 10, 20
print("a 等于 b? ", a == b) # False
print("a 大于 b? ", a > b) # False
print("a 小于 b? ", a < b) # True
print("a 大于等于 b? ", a >= b) # False
print("a 小于等于 b? ", a <= b) # True
print("a 不等于 b? ", a != b) # True
7.3.1 =
、==
和is
符号比较
-
=
:赋值 -
==
:比较值的大小 -
is
和is not
:比较地址的大小
x, y = 10, 10
print("x,y值相等?", x == y) # True
print("x,y地址相等?", x is y) # True
print("x地址:", id(x)) # x地址: 2303641059856
print("y地址:", id(y)) # y地址: 2303641059856
list1 = [1, 2, 3]
list2 = [1, 2, 3]
print("list值相等?", list1 == list2) # True
print("list地址相等?", list is list2) # False
print("list地址不相等?", list is not list2) # True
print("list1地址:", id(list1)) # list1地址: 2558597854592
print("list2地址:", id(list2)) # list2地址: 2558597938816
7.4 布尔运算符
7.4.1 与运算 and
只有全部为True
才为True
,只要有一个为False
,结果为False
。
t1 = t2 = True
f1 = f2 = False
print(t1 and t2) # True
print(t1 and f1) # False
print(f1 and t1) # False
print(f1 and f2) # False
7.4.2 或运算 or
只要有一个为True
,结果就为True
。
print(t1 or t2) # True
print(t1 or f1) # True
print(f1 or t1) # True
print(f1 or f2) # False
7.4.3 非运算 not
结果取反。
print(not t1) # False
print(not f1) # True
7.4.4 in
与not in
s = "helloword"
list = [1, 2, 3, 4]
print("w" in s) # True
print("w" not in s) # False
print(1 in list) # True
print(1 not in list) # False
7.5 位运算
先转换成二进制再进行计算。
7.5.1 位与&
所有位都为1,结果才为1。
"""
位与:& 结果都为1才为1
8: 00001000
4: 00000100
result: 00000000 结果为0
"""
print(4 & 8) # 0
7.5.2 位或|
所有位都为0,结果才为0。
"""
位或:| 结果都为0,才为0
8: 00001000
4: 00000100
result: 00001100 结果为12
"""
print(4 | 8) # 12
7.5.3 异或^
两个位相同取0,相反取1。
"""
异或:^ 两个位相同取0,相反取1
8: 00001000
4: 00000100
result: 00001100 结果为12
"""
print(4 ^ 8) # 12
7.5.4 左移运算<<
左移运算<<
,向左移动,高位溢出,低位补0,相当于乘以2。
"""
左移运算<<,向左移动,高位溢出,低位补0,相当于乘以2
4<<1:
4: 00000100
result: 00001000 结果为8
4<<2:
4: 00000100
result: 00010000 结果为16
"""
print(4 << 1) # 8
print(4 << 2) # 16
7.5.5 右移运算>>
右移运算>>
,向右移动,低位溢出,高位补0,相当于除以2。
"""
右移运算<<,向右移动,低位溢出,高位补0,相当于除以2
4>>1:
4: 00000100
result: 00000010 结果为2
4>>2:
4: 00000100
result: 00000001 结果为1
"""
print(4 >> 1) # 2
print(4 >> 2) # 1
7.5.6 位运算技巧
"""
&清零:
4: 00000100
0: 00000000
result: 00000000 结果为0
"""
print(4 & 0) # 0
"""
&判断奇偶:尾数为1就是奇数,尾数为0就是偶数
4: 00000100
1: 00000001
result: 00000000 结果为0
"""
print((4 & 1) == 0) # True
"""
^异或的定律:
1. a^b = c ==> a^c = b ==> b^c = a
2. (a^b)^c ==> a^(b^c)
3. x^x = 0, x^0 = x
"""
# 交换两个数的值
m = 10
n = 20
m = m ^ n
n = m ^ n # n = m ^ n ^ n = m
m = m ^ n # m = m ^ n ^ m = n
print("m: ", m, "n: ", n)
"""
a >> b & 1 代表检查 a 的第 b 位是否为 1,有两种可能性 0 或者 1
a += 1 << b 代表将 a 的第 b 位设置为 1 (当第 b 位为 0 的时候适用)
"""