1数据类型
使用type()函数去查看元素的类型
1.1数字类型
a = 3 # int类型
f = 3.14 # float类型
c = 3 + 4j # complex类型
- 判断这是什么类型? type()
# 判断变量的类型
print(type(a))
print(type(f))
print(type(c))
- 判断这是不是int类型?这是不是str类型? isinstance()
# 判断a是不是int类型?
print(isinstance(a, int)) # 返回true or false
- 判断两个数字是否相等?math.isclose()
import math
print(0.4 - 0.3 == 0.1) #输出False,因为浮点数会有数字溢出的误差
print(math.isclose(0.4 - 0.3, 0.1)) #输出True,使用isclose表示非常接近
1.2字符串类型-String
如何去表示字符串呢?
- 单引号 a = 'test'
- 双引号 b = "Python"
- 三引号 text = '''内容...''' #三个单引号
一个代码示例
text = "Beautiful is better than ugly." \
"Easy is better than complex."
print(len(text)) # 字符串的长度
print(text.count('is')) # 字符串中‘is’出现的次数
print('beautiful' in text) # 判断某个元素在不在字符串中
转义-如何在字符串里面去表达出来反斜杠\呢?
- \n表示换行;\t表示制表符(空格)
- 用两个\ \去表达\
print('jiwei\\') #==> jiwei\
- 那么多个反斜杠呢?
可以使用r加字符串 表示字符串的原始含义
print(r'jiwei\\') #==> jiwei\\
常用方法!!!
a = 'python Is Perfect'
print(a.upper()) # 全部大写 PYTHON IS PERFECT
print(a.lower()) # 全部小写 python is perfect
print(a.title()) # 每个单词首字母大写 Python Is Perfect
print(a.capitalize()) # 句首单词大写 Python is perfect
b = ' python '
print(b.strip()) # 去除两端的空格
print(a.split(' ')) # 按照指定的字符去分割 分割为列表 ['python', 'Is', 'Perfect']
print(' '.join(['hello', 'world'])) # 连接字符串序列
print(a.find('t')) # 搜索指定的字符串,返回索引值 只返回第一个遇到的指定元素
print(a.replace('Is', 'Are')) # 替换元素 python Are Perfect
其他重要的方法!!!
- 字符串映射
table = ''.maketrans('0123456789', '零一二三四五六七八九')
print('Tel:62819743'.translate(table))
- 对齐方式
编码和解码
a = '你好' # 对字符串编码
print(a.encode()) # b'\xe4\xbd\xa0\xe5\xa5\xbd'
print(type(a.encode())) # 编码后为<class 'bytes'>格式
# 解码
x = b'\xe6\x89\x8e\xe5\xbf\x83\xe4\xba\x86\xef\xbc\x8c\xe8\x80\x81\xe9\x93\x81'
print(x.decode()) # 扎心了,老铁
1.3列表类型-list
列表的创建
list = ['abcd', 785, 23, 'run', 72.1]
print(list((3, 5, 7, 9))) # 将元组转为列表 [3, 5, 7, 9]
print(list(range(1, 10, 2))) # 将range转换为列表 [1, 3, 5, 7, 9]
print(list('hello world')) # 将字符串转换为列表 ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
print(list({2, 4, 2, 1})) # 将集合转换为列表 [1, 2, 4]
-
列表的索引
-
列表的拼接、重复
使用+进行列表的拼接;使用*表示列表的重复
list = ['abcd', 785, 23, 'run', 72.1] list2 = [1111] print(list+list2)
列表生成器
print([x ** 2 for x in range(5)])
print([i * 2 for i in range(1, 100) if i * 2 < 50])
列表常用方法
a = [4, 2, 3, 6, 6, 9, 5, 8, 1]
a.insert(0, 1) # 在第0位插入1
print(a) # [1, 4, 2, 3, 6, 6, 9, 5, 8, 1]
a.append(77) # 在列表的末尾添加元素77
print(a)
a.sort() # 对列表a排序
print(a)
a.reverse() # 对列表a倒叙排序
print(a)
print(a.index(77)) # 元素77在列表a中的索引
print(a.count(1)) # 列表a中元素1的个数
a.remove(77) # 删除元素 可以用来删除指定元素
print(a)
print(a.pop()) # 删除最后面的元素
print(a)
print(a.pop(-2)) # 删除指定索引的元素
b = [22, 23, 24]
a.extend(b) # 在列表a后面扩展列表b
print(a) # [9, 8, 6, 6, 5, 4, 3, 1, 22, 23, 24]
列表-案例1
def clean_lixt(cls):
cleaned_list = []
for i in cls:
for j in i:
if j.isalpha() != True:
i = i.replace(j,'')
cleaned_list.append(i)
return cleaned_list
coffee_list = ['32latte', '_Americano30', '/34Cappuccino', 'Mocha35']
cleaned_list = clean_lixt(coffee_list)
for k, v in zip(range(1, len(cleaned_list)+1), cleaned_list):
print(k, v)
1.4元组类型-tuple
t = ('abcd', 785, 23, 'run', 72.1)
t1 = (1,)
==元组内元素不可以修改!!!==定义只有一个元素的元组时,元素后面要加上逗号!!!
但是元组内可以加上可变的对象,如list
t2 = ('a', 'b', 12, ['A', 'C'])
t2[-1][0] = 'X'
print(t2) # ('a', 'b', 12, ['X', 'C'])
元组的用途
- 可变长位置参数
def foo(arg1, *argst):
print(arg1)
print(argst) # * 可以作为收集参数的作用,收集结果以元组形式保存
foo('Hello', 'Wangdachui', 'Jiwei', 'Sunyan')
- 作为函数特殊返回类型
def foo():
return 1, 2, 3
print(foo()) # (1, 2, 3)
1.5字典类型-dict
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
print(d['Bob']) # 输出75
字典是无序的,用键值对存储,查找极快
同一个字典中key值必须是唯一的!!!
查看字典中那些键对应的值为85
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
for key in d:
if d[key] == 85:
print(key)
1.6集合类型-set
s = set([1, 2, 3]) # {1, 2, 3}
s2 = set([1, 1, 2, 2, 2, 3, 3]) # {1, 2, 3}
print(s, '\n', s2)
print(id(s), '\t', id(s2)) # id 不同
2运算符
2.1算术运算符
- 乘方:**
print(-3**2) #-9
print((-3)**2) #9 因为乘方的优先级要高于减号
- 整除://
9 // 2 = 4
- 取余:%
9 % 2 = 1
- 除
9 / 2 = 4.5
2.2比较运算符
- 赋值 =
- 比较 ==
- 不等于 !=
2.3赋值运算符
- =
- +=
- -=
- /=
- %=
- *=
- //=
2.4逻辑运算符
-
and 两者同时成立才为True
-
or 两者成立一个就为True
-
not 取反
2.5成员运算符
- in 在。。里面
- not in 不在。。里面
print(60 in[70, 60, 50]) # True
print('abc' in 'abc123sa') # True
print('abd' in 'a1b2cd') # False
print('3' in map(str, range(5))) # True
2.6身份运算符
- is 判断两个标识符是不是引用一个对象
- is not
y = 1
x = 1
print(x is y) # True
print(id(x) == id(y)) # True
3程序控制流
if
import random
x = random.randint(0, 300)
count = 0
while count <= 5:
num = int(input('please enter a number between 0 - 300'))
if num == x:
print('bingo!')
elif num > x:
print('too large, please try again')
else:
print('too small, please try again')
count += 1
print('fail!')
for循环
for i in range(1, 10, 2):
print(i)
l = list(range(11))
for i in l:
print(i)
s = 'Python'
for i in s:
print(i)
上面的输出结果都是每行一个元素的输出,那么如何在一行去输出呢?
- 加上end=’’
for i in range(1, 10, 2):
print(i, end=',')
print()
l = list(range(11))
for i in l:
print(i, end=' ')
print()
s = 'Python'
for i in s:
print(i,end='')
break语句
sumA = 0
i = 1
while True:
sumA += i
i += 1
if sumA > 10:
break
print('i={},sumA={}'.format(i, sumA))
- break是