Hello World
print("Hello World!")
>>> Hello World!
2、变量
2.1 命名
- 变量名:包含字母/数字/下划线,只能字母和下划线开头,数字不能打头。e.g. tensor_1是正确的,1_tensor是错误的
- 不能包含空格 e.g. tensor 1是错误的
- 避开python的关键字和函数名用作变量名,也不要用python中有特殊用途的单词,e.g. print
- 尽量简洁又有描述性,e.g. student_name就比s_n要更好
- 2.2 变量赋值
- 不需要类型声明
- 每个变量都必须赋值,赋值以后变量才会被创建
# 2.1 命名
# 2.2 变量赋值
number = 10 # 整型变量
distance = 10.0 # 浮点型变量
name = 'sb' # 字符串
print(number)
print(distance)
print(name)
>>>
10
10.0
sb
- 2.3 多个变量赋值
- 同时为多个变量赋值
- 为多个对象指定多个变量
# 2.3.1 同时为多个变量赋值
a = b = c = 1
print(a,b,c)
>>>1 1 1
# 2.3.2 为多个对象指定多个变量
a, b, c = 1, 1.0, 'sb'
print(a,b,c)
>>>
1
1.0
sb
3. 字符串
- 3.1 修改字符串的大小写
- 3.2 拼接字符串
- 3.3 制表符和换行符
- 3.4 删除空白
- 3.5 编码问题
- 3.6 格式化输出
- 3.7 索引
# 3.1 修改字符串的大小写
# 3.1.1 让首字母大写 title()函数
name = 'clear love'
print(name.title())
>>>Clear Love
# 3.1.2 让所有字母变成大写 upper()函数
print(name.upper())
>>>CLEAR LOVE
# 3.1.3 让所有字母变成小写 lower()函数
print(name.lower())
>>>clear love
# 3.2 通过+来合并字符串
first_name = 'clear'
last_name = 'love'
full_name = first_name + " " + last_name
print('Hello ' + full_name.title() + '!')
>>>Hello Clear Love!
# 3.3.1 制表符\t
print("sb")
print("\tsb")
>>>
sb
sb
# 3.3.2 换行符\t
print("NT\nSB\nNC")
>>>
NT
SB
NC
# 3.4.1 删除左边的空白 lstrip()函数
your_name = ' sb '
print(your_name.lstrip())
# 3.4.2 删除右边的空白 rstrip()函数
print(your_name.rstrip())
# 3.4.3 删除两边的空白 strip()函数
print(your_name.strip())
>>>
sb
sb
sb
# 3.5 编码问题
# 我们要先了解几种编码,ASCII:一个字节,包括了一些数字和英文字母
# Unicode:两个字节,由于一个字节被一些数字和英文字母用完了,那么汉字在一个字节的情况下就会出现乱码,所以两个字节的Unicode就诞生了
# UTF-8变长编码:用一个字节表示英文字母,三个字节表示汉字,4-6个字节表示生僻字
# Python3中字符串使用Unicode编码
# ord()函数:获得字符的整数表示
# chr()函数:获得整数的字符表示
print(ord('A'))
print(chr(66))
>>>
65
B
# 编码
print('A'.encode('ascii'))
print('哈哈'.encode('utf-8'))
>>>
b’A’
b’\xe5\x93\x88\xe5\x93\x88’
# 解码
print(b'ABC'.decode('ascii'))
print(b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8'))
>>>
ABC
中文
# 若有错误
b'\xe4\xb8\xad\xff'.decode('utf-8')
>>>
UnicodeDecodeError Traceback (most recent call last)
in
----> 1 b’\xe4\xb8\xad\xff’.decode(‘utf-8’)
UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xff in position 3: invalid start byte
# 传入参数errors='ignore' 忽略错误
b'\xe4\xb8\xad\xff'.decode('utf-8',errors='ignore')
>>>‘中’
# len()函数计算字符个数或字节数
print(len('中文')) #字符个数
print(len(b'\xe4\xb8\xad\xe6\x96\x87')) #字节数
>>>
2
6
# 3.6 格式化输出
# 3.6.1 %d 整数 %f 浮点数 %s 字符串 %x 十六进制数
'Hello, %s' %'world'
>>>‘Hello, world’
# 3.6.2 遇到需要表示普通字符%的时候
print('%d %%'%10)
>>>10 %
# 3.6.3 format()函数对应{0},{1}······
# {1:.1f} -> .1f精确到小数点后一位
'hello {0},you get {1:.1f} point'.format('sb',0.000)
>>>‘hello sb,you get 0.0 point’
# 3.7 索引
# 从左到右从0开始
# 从右到左从-1开始
str = 'Hello world'
# 完整
print(str)
# 第一个字符
print(str[0])
# 第2-5个
print(str[1:5])
# 第3个以后
print(str[2:])
# 后一个
print(str[-1])
# 输出两次
print(str*2)
>>>
Hello world
H
ello
llo world
d
Hello worldHello world
4.数字和运算符
4.1 加减乘除/乘方/取模/取整数
- 4.2 比较运算符
- 4.3 位运算符
- 4.4 逻辑运算符
# 4.1 整数的加减乘除/乘方/取模/取整除
# 加法
print(2+3)
#减法
print(3-2)
# 乘法
print(2*3)
# 除法
print(3/2)
# 乘方
print(3 ** 2)
# 取模
print(5%2)
# 取整除/向下取整
print(3//2)
>>>
5
1
6
1.5
9
1
1
# 4.2 比较运算符
# ==相等返回true
print(1 == 2)
# != 不相等返回true
print(1 != 2)
# <:小于 >:大于 <=:小于等于 >=:大于等于
print(1 > 2)
print(1 < 2)
print(1 >= 1)
print(1 <= 2)
>>>
False
True
False
True
True
True
# 4.3 位运算符
# 与运算 都是1的时候才为1
print('1&0:',1&0)
print('1&1:',1&1)
print('0&0:',0&0)
# 或运算 有1就得1
print('1|0:',1|0)
print('1|1:',1|1)
print('0|0:',0|0)
# 异或运算 不相同才得1
print('1^1:',1^1)
print('1^0:',1^0)
print('0^0:',0^0)
# 左移运算符 高位丢弃/低位补0 2:0000 0010 左移一位 4:0000 0100
print('2<<1:',2 << 1)
# 右移运算符 地位丢弃/高位补0 2:0000 0010 右移一位 1:0000 0001
print('2>>1:',2 >> 1)
>>>
1&0: 0
1&1: 1
0&0: 0
1|0: 1
1|1: 1
0|0: 0
1^1: 0
1^0: 1
0^0: 0
2<<1: 4
2>>1: 1
# 4.4 逻辑运算符 布尔‘与‘’或‘’非‘
# and : x and y,若x为false,返回false,否则返回y的计算值
a = False
b = 2
print('a=False,b=2,a and b:',a and b)
a = 1
print('a=1,b=2,a and b:',a and b)
# or : x or y ,若x不是0,则返回x的值,否则返回y的计算值
print('a=1,b=2,a or b:',a or b)
a = 0
print('a=0,b=2,a or b:',a or b)
# not : not x
print('a=0,not a:',not a)
>>>
a=False,b=2,a and b: False
a=1,b=2,a and b: 2
a=1,b=2,a or b: 1
a=0,b=2,a or b: 1
a=0,not a: False
5. 列表
- 5.1 访问列表中的值
- 5.2 修改/删除/添加元素
- 5.3 列表中的常用操作
- 5.4 列表中的常用函数
# 5.1 访问列表中的值 索引从0开始
name = ['Tim','Kris','Sam']
# 5.1.1 访问列表中的第一个值
print('访问列表中的第一个值:',name[0])
# 5.1.2 访问第二个以后所有值
print('访问列表中的第一个值:',name[1:])
# 5.1.3 访问所有值
print('访问所有值:',name)
# 5.1.4 访问倒数第一个
print('访问倒数第一个:',name[-1])
>>>
访问列表中的第一个值: Tim
访问列表中的第一个值: [‘Kris’, ‘Sam’]
访问所有值: [‘Tim’, ‘Kris’, ‘Sam’]
访问倒数第一个: Sam
# 5.2 修改/删除/添加元素
# 5.2.1 修改元素
name[2] = 'sb'
print('修改第3个位置的元素后:',name[2])
>>>修改第3个位置的元素后: sb
# 5.2.2 删除元素
# 删除任意位置的元素 del()函数
print('删除元素前:',name)
del name[1]
print('删除第2个元素后:',name)
>>>
删除元素前: [‘Tim’, ‘Kris’, ‘sb’]
删除第2个元素后: [‘Tim’, ‘sb’]
# 删除最后一个元素 pop()函数
print('删除元素前:',name)
name.pop()
print('删除最后一个元素后:',name)
>>>
删除元素前: [‘Tim’, ‘sb’]
删除最后一个元素后: [‘Tim’]
# 5.2.3 添加元素
# 在任意位置添加元素 insert()函数
print('添加元素前:',name)
name.insert(1,'Kris')
print('在第1个位置添加元素后:',name)
>>>
添加元素前: [‘Tim’]
在第1个位置添加元素后: [‘Tim’, ‘Kris’]
# 在最后一个位置添加元素 append()函数
print('添加元素前:',name)
name.append('Sam')
print('添加在最后一个位置后:',name)
>>>
添加元素前: [‘Tim’, ‘Kris’]
添加在最后一个位置后: [‘Tim’, ‘Kris’, ‘Sam’]
# 5.3 列表中的常用操作
list1 = [1,2,3]
list2 = [4,5,6]
list3 = [1]
# 列表的+操作
print("两个列表相加后:",list1+list2)
>>>两个列表相加后: [1, 2, 3, 4, 5, 6]
# 列表的*操作
print('列表所有元素x3:',list3*3)
>>>列表所有元素x3: [1, 1, 1]
# 列表的in, 判断元素是否在列表中
print('2是不是list1的元素:',2 in list1)
>>>2是不是list1的元素: True
# for ... in 列表的遍历
for x in list1:
print(x)
>>>1
2
3
# 1.4 列表中常用的函数
# 获得列表的长度 len()函数
print('输出函数长度:',len(list1))
# 获得列表中的最大值 max()函数
print('列表中的最大值:',max(list1))
# 获得列表中的最小值 min()函数
print('列表中的最小值:',min(list1))
>>>
输出函数长度: 3
列表中的最大值: 3
列表中的最小值: 1
# 永久排序方法 sort()
list4 = [2,3,1,5]
list4.sort()
print('排序后的list4:',list4)
>>>排序后的list4: [1, 2, 3, 5]
# 暂时排序方法 sorted()
list5 = [3,5,2,6,1]
print('暂时排序的结果:',sorted(list5))
print('排序后原列表:',list5)
>>>
暂时排序的结果: [1, 2, 3, 5, 6]
排序后原列表: [3, 5, 2, 6, 1]
# reverse=True参数 逆序排序
print('暂时逆序排序的结果:',sorted(list5,reverse=True))
>>>暂时逆序排序的结果: [6, 5, 3, 2, 1]
6. 元组
- 6.1 定义元组
- 6.2 访问/修改/删除元组
# 6.1 定义元组
t = (1,2)
print(t)
>>>(1, 2)
# 空元组
p = ()
print(p)
>>>()
# 元组是不可修改的
t[0] = 2
>>>
TypeError
Traceback (most recent call last)
in
----> 1 t[0] = 2
TypeError: ‘tuple’ object does not support item assignment
# 6.2 访问/修改/删除元组
# 访问
print('访问第一个元素:',t[0])
# 修改是非法的 但是可以创建新的元组
t1 = (1,2,3)
t2 = (4,5)
print('拼接两个元组:',t1+t2)
>>>
访问第一个元素: 1
拼接两个元组: (1, 2, 3, 4, 5)
# 删除
print('t2删除前:',t2)
del t2
# 删除后 就不存在了
print('t2删除后:',t2)
>>>
t2删除前: (4, 5)
NameError
Traceback (most recent call last)
in
----> 1 print(‘t2删除后:’,t2)
NameError: name ‘t2’ is not defined
7. 字典
- 7.1 字典的定义
- 7.2 访问某个关键值对应的值
- 7.3 添加新的键值对
- 7.4 修改字典
- 7.5 删除字典元素
- 7.6 遍历键值对
- 7.7 遍历字典中所有的键
- 7.8 遍历字典中所有的值
- 7.9 列表中有字典
- 7.10 字典中有列表
- 7.11 字典中有字典
# 7.1 字典的定义:是一种可变容器,可以储存任意类型对象 形如:d = {key:value}
d = {'a':1,'b':2,'c':3}
d
>>>{‘a’: 1, ‘b’: 2, ‘c’: 3}
# 7.2 访问某个关键值对应的值 就像访问数组一样,[]内的下标是字典的键值
print(d['a'])
>>>1
# 访问外星人alien_0的颜色和点数/如果玩家射杀这个外星人,就可以获得相应的点数
alien_0 = {'color':'green','points':5}
new_points = alien_0['points']
print('You just earned ' + str(new_points) + ' points!')
>>>You just earned 5 points!
# 7.3 添加新的键值对
print('添加前的字典:',d)
d['d'] = 4
d['e'] = 5
print('添加后的字典:',d)
>>>
添加前的字典: {‘a’: 1, ‘b’: 2, ‘c’: 3}
添加后的字典: {‘a’: 1, ‘b’: 2, ‘c’: 3, ‘d’: 4, ‘e’: 5}
# 1.4 修改字典
print('修改前的字典:',d)
d['a'] = 666
print('修改后的字典:',d)
>>>
修改前的字典: {‘a’: 1, ‘b’: 2, ‘c’: 3, ‘d’: 4, ‘e’: 5}
修改后的字典: {‘a’: 666, ‘b’: 2, ‘c’: 3, ‘d’: 4, ‘e’: 5}
# 1.5 删除字典元素 del
print('删除前的字典:',d)
# 删除元素c
del d['c']
print('删除c后的字典',d)
>>>
删除前的字典: {‘a’: 666, ‘b’: 2, ‘c’: 3, ‘d’: 4, ‘e’: 5}
删除c后的字典 {‘a’: 666, ‘b’: 2, ‘d’: 4, ‘e’: 5}
# 清空所有条目
d.clear()
print('清空所有条目后的字典:',d)
>>>清空所有条目后的字典: {}
# 7.6 遍历键值对
user = {'username':'sbzz','first':'sb','last':'zz'}
# 用 for key,value in xx.items():
for k,v in user.items():
print('\nkey:',k)
print('\nvalue',v)
>>>
key: username
value sbzz
key: first
value sb
key: last
value zz
# 7.7 遍历字典中所有的键
# for key in xx.keys():
for k in user.keys():
print(k)
>>>
username
first
last
# 按顺序遍历字典中所有的键 sorted()
for k in sorted(user.keys()):
print(k)
>>>
first
last
username
# 7.8 遍历字典中所有的值
# for value in xx.values():
for v in user.values():
print(v)
>>>
sbzz
sb
zz
# 7.9 列表中有字典
# 每个外星人用字典表示它的各种属性,用一个大的列表扩起来,组成一个外星人列表
alien_0 = {'color':'green','point':5}
alien_1 = {'color':'red','point':3}
alien_2 = {'color':'yellow','point':2}
aliens = [alien_0,alien_1,alien_2]
# 遍历
for alien in aliens:
print(alien)
>>>
{‘color’: ‘green’, ‘point’: 5}
{‘color’: ‘red’, ‘point’: 3}
{‘color’: ‘yellow’, ‘point’: 2}
# 7.10 字典中有列表
# 人和自己喜欢的编程语言是一个键值对,喜欢的语言不止一种,可以有多种语言构成一个列表
favorite_languages = {
'sb':['python','c++'],
'zz':['java','php']
}
for name,languages in favorite_languages.items():
print('\n' + name.title() + '\'s favorite languages are:')
for language in languages:
print('\t'+language.title())
>>>
Sb’s favorite languages are:
Python
C++
Zz’s favorite languages are:
Java
Php
# 7.11 字典中有字典
# 有很多的用户 每个用户有first name和last name ,所以用户是一个大的字典,每个小字典是{名字:全名}
user = {
'aeinstein':{
'first':'albert',
'last':'einstein'
},
'mcurie':{
'first':'marie',
'last':'curie'
},
}
for username,fullname in user.items():
print('\nUsername:'+username)
full_name = fullname['first'] + ' ' + fullname['last']
print('Full name:' + full_name.title())
>>>
Username:aeinstein
Full name:Albert Einstein
Username:mcurie
Full name:Marie Curie
8. Set
- 8.1 建立一个set
- 8.2 重复元素自动过滤
- 8.3 添加元素 add()
- 8.4 删除元素 remove()
# 8.1 建立一个set
# set和dict类似,但只有key没有value,并且key不能重复
s = set([1,2,3])
s
>>>{1, 2, 3}
# 8.2 重复元素自动过滤
# 传入的是列表
s = set([1,1,1,2,2,3,3,3,3])
s
>>>{1, 2, 3}
# 8.3 添加元素 add()函数
s.add(4)
s
>>>{1, 2, 3, 4}
# 8.4 删除元素 remove()函数
s.remove(4)
s
>>>{1, 2, 3}