Python 基础-变量和简单类型

最近在学习python,主要是学习下python的使用以及学完之后看看用在哪里,一直知道python比较火,但是不知道具体用在哪里,所以也想跟着学学

注释 变量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import keyword

# 这是单行注释
print('hello world')
'''这是多行注释
所以print("不执行")
'''
print('注释有单行和多行')
"""
三个单引号 或者多引号
多行注释
"""
# 变量
a = 2
print(a)
print(type(a))
a = 'hello a'
print(a)
print(type)

# print 函数 print(self, *args, sep=' ', end='\n', file=None)
name = 'CHarly'
age = 8
print('姓名:', name, '年龄:', age)
# 分割
print('姓名:', name, '年龄:', age, sep='|')
# 不换行
print(50, '\t', end="")
print(60, '\t', end="")
print(70, '\t', end="")
print('')
# 输出到文件
f = open('test.txt', 'w')
print('曾今沧海难为水', file=f)
print('除去巫山不是云', file=f)
f.close()

# 查看关键字 import keyword
print(keyword.kwlist)
数值类型
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# 整型
a = 56
print(a)
print(type(a))
a = 999999999999999999
print(a)
# <class 'int'>
print(type(a))
a = None
print(a)
# <class 'NoneType'>
print(type(a))
# 十六进制 0x 0X
a = 0xaf
print(a)
# 二进制 0b 0B
a = 0B111
print(a)
# 八进制 0o 0O
a = 0o54
print(a)
# python3.x 支持数据加下划线 增加可读性
one_million = 1_000_000
print(one_million)

# 浮点数 包含小数点就为浮点数 如 5.12 或者科学计数为浮点数 5.12e2 512e2也是浮点数
afl = 2.33454
print(afl)
print(type(afl))
f1 = 5.12e2
print(f1)
f2 = 512e2
# 51200.0 浮点数
print(f2)
print(type(f2))

# 复数 j J 表示 模块cmath 支持复数的很多计算
acl = 3 + 0.2j
print(acl)
# <class 'complex'>
print(type(acl))

# 字符串 单引号或者双引号 括起来
# <class 'str'>
print(type('hello world'))
# + 号拼接字符串
str1 = "Python"
str2 = " is funny"
finalStr = str1 + str2
print(finalStr)

# 字符串和数值不能直接相加 需要用str()或者repr()转换
p = 33.4
s1 = '字符串: '
print(s1 + str(p))
print(s1 + repr(p))
# repr()还有一个功能是以Python表达式的形式来表示值
print('hello world')
# 下面输出 'hello world' 带引号
print(repr('hello world'))

# input() 获取用户输入 总是返回字符串
a = input('> ')
print(a)
print(type(a))

# 长字符串 ''' ''' 或者 """ """ 包含 或者 \ 转义
a = '''this is a long story
and long long time ago
this's a "monster" ...
'''
print(a)
a = 'this is a long \
long story '
print(a)
# 表达式换行也要转义
a = 3 + 2 + 3 \
* 2
print(a)

# 原始字符串 r 标记 不需要转义
a = r'C:\python\python'
print(a)
print(r'let\'s go')

# 字节 bytes
# 1.字符串是ASCII字符,前面加b
# 2.bytes()函数 默认UTF-8
# 3.字符串的encode()函数 默认utf-8

b1 = bytes()
# <class 'bytes'>
print(type(b1))
b2 = b'hello'
print(b2)
print(b2[0])
print(b2[2:4])
b3 = bytes('我爱python编程', encoding='utf-8')
print(b3)
b4 = '我爱python编程'.encode('utf-8')
print(b4)
# bytes 解码
print(b3.decode('utf-8'))
字符串的基本操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# 字符串常用方法

# 转义字符
# \b 退格 \n 换行 \r 回车 \t 制表 \" 双引号 \' 单引号 \\ 反斜线
s = 'Hello\ncharlie\nGood\nMorning'
print(s)

# 字符串格式化 % %s %d %f %.3f .....
user = 'Candy'
age = 18
print("%s is a %s year old boy" % (user, age))
print('number is %.3f' % 0.54655)

# 序列相关
# 下标获取字符 -2 表示倒数第二个
s = '我学习python'
print(s[0])
print(s[-2])
print(s[1:3]) # 学习 多个
print(s[3:]) # python
print(s[:4]) # 我学习p
# 是否包含某个子串 in
print('python' in s)
print('python2' in s)
# 长度 len()
print(len(s))
# 最大字符 max() 最小字符min()
print(max(s))
print(min(s))

# 字符串大小写
# dir(...)查看类或者模块的内容 方法等 __xx__ 约定私有 不希望被外部直接调用
# help(..) 文档
print(dir(str))
print(help(str.title))
# title() 单词首字母大写
# lower() 整个字符串改为小写
# upper() 整个字符串大写
a = 'our domain iS crazy.org'
print(a.title())
print(a.upper())
print(a.lower())

# 删除空白
# strip() 删除两边空白 lstrip() 删除左边空白 rstrip() 删除右边空白
s = ' this is blank '
print(s.lstrip())
print(s.rstrip())
print(s.strip())
# 传入字符串可以删除字符串
s = 'it is a long night'
print(s.lstrip('int'))
print(s.rstrip('int'))
print(s.strip('int'))

# 查找 替换
s = 'it is a good world'
print(s.startswith('it')) # 是否以字符串开始
print(s.endswith('world')) # 是否以xx结尾
print(s.find('good')) # 找到位置 没有返回 -1
print(s.index('is')) # 找到位置 没有ValueError 错误
print(s.replace('it', 'xxxx')) # 替换字符串
# translate() 翻译映射表
# maketrans() 创建翻译表
table = str.maketrans('tsg', '891')
print(table)
print(s.translate(table))
print(str.maketrans('ABCDEFG', 'abcdefg'))

# 分割 连接
# split() 按指定分隔符分割
# join() 多个短语连接成字符串
s = 'it is a good-world'
print(s.split())
print(s.split('-'))
print(s.split(None, 2)) # 分割前两个
str_l = s.split()
print('/'.join(str_l))
运算符基础
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
import time

# 运算符
# 赋值运算符 = 号
a = b = c = 30
print(a, b, c)

# 算术运算符
# +数值相加 和 连接字符串
print(2 + 3)
print('a' + 'k')
# - 数值相减 或者求负值
print(3 - 4)
x = -5
print(-x)
print(+x) # +号不变
# * 数值相乘 还能表示N个字符串相连
print(2 * 3)
print('hello\t' * 4)
# / 数值相除 // 只保存整数
print(19 / 4)
print(19 // 4) # 4 整型
print(5.2 // 3.1) # 1.0 浮点
# % 求余操作
print(5 % 2)
print(3.2 % 1.2)
print(4.3 % 2)
# ** 乘方运算
print(2 ** 2)
print(9 ** 0.5) # 相当于开方
print(27 ** (1 / 3))
# 位运算
'''
& 按位与 两个都为1则1 其他0
| 按位或 两个有一个为1 则1 其他0
^ 按位异或 两个相同为0 其他1
~ 按位取反 0-1 1-0 取反
<< 左位移
>> 右位移
'''
'''
& 操作2&3
00000000 00000000 00000000 00000010
00000000 00000000 00000000 00000011
00000000 00000000 00000000 00000010
'''
print(3 & 4)
'''
| 操作3|4
00000000 00000000 00000000 00000011
00000000 00000000 00000000 00000100
00000000 00000000 00000000 00000111
'''
print(3 | 4)
'''
^ 操作2^3
00000000 00000000 00000000 00000010
00000000 00000000 00000000 00000011
00000000 00000000 00000000 00000001
'''
print(2 ^ 3)
'''
~4
00000000 00000000 00000000 00000100
取反
11111111 11111111 11111111 11111011
上面为负数 为补码形式 转成原码
取反 +1 第一位取反
00000000 00000000 00000000 00000101
10000000 00000000 00000000 00000101
'''
print(~4)
'''
~-4
10000000 00000000 00000000 00000100
获取到补码之后再取反 得到最终结果
除了符号位取反 +1 获得补码
11111111 11111111 11111111 11111100
取反得到结果
00000000 00000000 00000000 00000011
'''
print(~-4)
'''
15<<2 左移动两位 补0
00000000 00000000 00000000 00001111
00000000 00000000 00000000 00111100
'''
print(15 << 2)
'''
15 >> 2 右边移动 缺少补符号位一直-补0
00000000 00000000 00000000 00001111
00000000 00000000 00000000 00000011
'''
print(15 >> 2)
'''
-15 >> 2
10000000 00000000 00000000 00001111
补码(除了符号位取反 +1) 右边移动两位 缺失的与符号位一致补1
11111111 11111111 11111111 11110001
11111111 11111111 11111111 11111100
获得原码
00000000 00000000 00000000 00000100
10000000 00000000 00000000 00000100
'''
print(-15 >> 2)

# 扩展后的赋值运算符
# += -= *= /= //= %= **= &= |= ^= <<= >>=
a = 0
a += 3 # a = a + 3

# 索引运算符 :
a = 'abcdefghijklmn'
print(a[2:8:3]) # 最后的3表示步长

# 比较运算符
# > < >= <= == !=
# is 、is not 判断两个变量引用的对象是否相同
print(3 > 2)
# 布尔值 True False 表示 True可以当成1 使用 False当成0 使用
print(1 == True)
print(True + False + 3)
a = time.gmtime()
b = time.gmtime()
print(a == b) # 值相等 True
print(a is b) # 对象不相等 False
# id() 获得对象的内存地址
print(id(a))
print(id(b))

# 逻辑运算符
# and 与 or 或 not 非
print(not False)
a = 3
print(a > 2 and a < 1)

# 三目运算符 True_statement if expression else False_statement
'''
expression True 或者 False 决定结果
True_statement 或者 False_statement 多条语句
逗号,分割,都会执行,返回多条语句的返回值 分号;分割,都会执行 返回第一条语句的返回值
'''
a = 1
b = 3
c = 'a大于b' if a > b else 'a 小于b'
print(c)

# in 运算符 not in 判断是否在某个序列中
print('a' in 'this is a good day')
print('c' not in 'this is a good day')

主要看代码中的注释吧…