输入输出函数
输入
input输入类型为string
name = input('名字:') #input输入类型为string
num= int(input("请输入一个整数"))
输出
print(name)
print(f"你好,{name}")
名字:圈圈
圈圈
你好,圈圈
格式化输出
import math
r = input("请输入圆的半径")
f_r = float(r)
c = 2*math.pi*f_r
s = math.pi*f_r**2
print(f"圆的周长为:{c:.2f}")
print(f"圆的面积为:{s:.2f}")
请输入圆的半径3
圆的周长为:18.85
圆的面积为:28.27
if else elif格式
- 可以出现if 1 < a < 3的格式
a = input("请输入正还是反:")
if a == "正":
print("你选择正!")
elif a == "反":
print("你选择反!")
else:
print("输入错误!")
注释
# 单行注释 快捷键:ctrl+/
def f(n):
"""函数说明"""
'''函数说明'''
关键字
Ture、False、None、if、elif、else
a = None
if a is None: # 更为习惯
print('a为空')
运算符
整除符号://
print(5/2) # 2.5
print(5//2) # 2
幂运算:**
print(3**2) # 9
print(2**3) # 8
位运算:左移<<、右移>>、按位与&、按位或|、按位异或^、按位取反~
print(4<<1) # 8:4的二进制为100向左移1位
print(4>>1) # 2:4的二进制为100向右移1位
print(~1) # -2
身份运算符:is、is not
a=1
print(id(a))
b=1
print(id(b))
print(a is b)
print(a is not b)
1672454275312
1672454275312
True
False
成员运算符:in、not in
x = 1
y = [1,2,3]
print(x in y) # True
print(x not in y) # False
逻辑运算符:否not、与and、或or
a = True
!a # 'a' 不是内部或外部命令,也不是可运行的程序或批处理文件。
not a # False
运算符优先级
- 算术运算符
- 位运算
- 比较运算
- 布尔运算
- 赋值运算
字符与字符串
转义字符
\n:换行
\t:tab
\u:unicode编码 爬虫常见
print('\u5706\u5706') # 圆圆
题目:输入人名返回unicode编码
name = input("请输入名字:")
s = ''
for n in name:
s += r"\u" + hex(ord(n))[2:]
# r:raw string原生字符串
# hex:16进制数
# ord:返回一个字符的10进制Unicode码,必须是一个字符
print(f"{name}的unicode编码为:{s}")
# formatted String格式化字符串
请输入名字:圆圆
圆圆的unicode编码为:\u5706\u5706
字符串
常见问题:
1.字符串里含有单引号或者双引号怎么办?
print("I'm a student.")
print('哈哈”哈')
2.多行字符串怎么办?
print("""1
2
3""")
函数
s = "姜撞奶好好喝"
# 1.求字符串长度
len(s) # 6
# 2.分割字符串
sub1_s = s[:3]
sub2_s = s[-3:]
print(sub1_s) # 姜撞奶
print(sub2_s) # 好好喝
# 3.字符串去空格
s1 = " " + s + " "
print(s1)
s1.strip()
# 4.判断字符串是否开头
s.startswith("姜撞奶")
# 5.串联多串
s2 = s + "yes"
print(s2)
s3 = "yes"
str= '!'.join([s,s3])
print(str)
# 6.以某字符分割字符串
str.split("!") # ['姜撞奶好好喝', 'yes']
# 7.替换子串
str.replace("!","。") # 姜撞奶好好喝。yes
大小写
name = "yuan quan"
print(name.lower()) # yuan quan
print(name.upper()) # YUAN QUAN
print(name.title()) # Yuan Quan
print(name.capitalize()) # Yuan quan
print(name.swapcase()) # YUAN QUAN
列表
特点
1.元素类型可以不同
2.在内存中紧邻存储
创建
# 1.[]
a = []
b = [3,"我",3.34]
# 2.list()
c = list((3,1,2)) # (3,1,2)为元组类型
print(c)
# 3.range() 创建一个序列
d = list(range(10)) # 不包括10
print(d) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
#创建副本
b = [3,"我",3.34]
print(id(b))
e = b[:]
print(id(e))
print(e)
"""2866847250176
2866847173888
[3, '我', 3.34]"""
访问
| 列表a | 姜 | 撞 | 奶 | 好 | 好 | 喝 |
|---|---|---|---|---|---|---|
| 正索引 | 0 | 1 | 2 | 3 | 4 | 5 |
| 负索引 | -6 | -5 | -4 | -3 | -2 | -1 |
a = "姜撞奶好好喝"
# 1.单个元素访问
# 1.1正向访问
a[0]
# 1.2负向访问
a[-4]
# 2.切片访问[开始:结束:步长] [ )包前不包后
a[:3] # 不包括3:姜撞奶
a[-4:] # 包括-4:奶好好喝
a[::2]
增加元素
- append
- insert
- extend
a = [1,'wo',3,4]
# a.append()
a.append(0)
print(a)
# a.insert()
a.insert(1,'cha') # insert(位置,插入元素)
print(a)
# a.extend()
a.extend([1,2,3])
print(a)
删除元素
- pop
- remove
- del
a = [1,'wo',3,4,1,2]
# a.pop()
print(a.pop()) # 默认输出最后一位元素
print(a)
print(a.pop(0)) # 输出第一个元素
# a.remove(元素值),只会移除第一个1
a.remove(1)
print(a)
# del a[索引]
del a[0] # 根据索引删除元素
print(a)
遍历
- range
- in
a = [1,'wo',3,4,1,2]
# range
a_len = len(a)
for i in range(a_len):
print(a[i],end = ",") # end默认为"\n"
print("\n")
# in
for i in a:
print(i,end = ";")
列表生成式
- b = [i*2 for i in a]
- b = [i*2 for i in a if i%2 == 0]
a = [1,'wo',3,4,1,2]
b = [i*2 for i in a]
print(b) # [2, 'wowo', 6, 8, 2, 4]
c = [1,3,4,6,7,8,9,10]
d = [i*2 for i in c if i%2 == 0] #与if结构结合
print(d) # [8, 12, 16, 20]
思考题:输入列表a,返回所有偶数
a = input("请输入一个列表:")
a = eval(a) # eval():将输入的字符串转为对应的数据类型
print(a)
b = [i for i in a if i%2 == 0]
print(b)
b = []
for e in a:
if e%2 == 0:
b.append(e)
print(b)
请输入一个列表:[1,2,3,4,5,6,7,8]
[1, 2, 3, 4, 5, 6, 7, 8]
[2, 4, 6, 8]
[2, 4, 6, 8]
排序
-
直接对表进行操作
- a.sort()
- a.sort(reverse=Ture) :降序
- a.reverse()
-
生成新的列表
- sort(a)
- sort(a,reverse=Ture)
list1 = [1,4,2,5,4]
list1.reverse() #翻转
print(list1)
list1.sort()
print(list1) #升序排列,直接对表进行操作
list1.sort(reverse=True)
print(list1) #降序排列
list2 = [1,4,2,5,4]
print(sorted(list2)) #升序排列,生成一个新表
print(sorted(list2,reverse=True)) #降序排列,从之前的列表中挑选出元素组成新的表
list3 = ["fddg","gfdggfg","f"] #按照长度进行排序,生成新的列表
print(sorted(list3,key=len))
元组
特点
- 创建好后,不可以增加元素
- 创建好后,不可以删除元素
创建
a = ()
a = tuple()
a = tuple([1,"w",2,3,"我"])
访问
a = (1,"w",2,3,"我")
a[0] # 1
type(a[0]) # int
a[:2] # (1,"w")
方法
- a.count():判断元素在元组中出现了几次
- a.index():判断元素在元组中的索引值
a = (1,"w",2,3,"我")
a.count("我")
a.index("我")
字典
特点
- 无序,不可以下标索引
- 键唯一
创建
-
d = {}
d[健]=值
-
d = dict(健=值,健=值)
-
d = dict([(健,值),(健,值)])
d1 = {}
d1['a'] = 1
d1['b'] = 2
print(d1) # {'a': 1, 'b': 2}
d2 = dict(a=1,b=2)
# 错误写法:d2 = dict('a'=1,'b'=2)
print(d2) # {'a': 1, 'b': 2}
d3 = dict([('a',1),('b',2)])
print(d3)
访问
-
健:d.keys()
-
值:d.values()
-
键值对:d.items()
-
遍历:
-
for k in d:
print(k,d[k])
-
for k,v in d.items():
print(k,v)
-
-
访问某个不存在健,放回默认值:d.get(健,默认值)
d = {'a':1,'b':2,'c':3}
# 健
d.keys() # dict_keys(['a', 'b', 'c'])
list(d.keys()) # ['a', 'b', 'c']
# 值
d.values() # dict_values([1, 2, 3])
list(d.values()) # [1, 2, 3]
# 键值对
d.items() # dict_items([('a', 1), ('b', 2), ('c', 3)])
list(d.items()) # [('a', 1), ('b', 2), ('c', 3)]
# 遍历1
for k in d:
print(k,d[k])
# 遍历2
for k,v in d.items():
print(k,v)
'''输出结果:
a 1
b 2
c 3
'''
# 访问不存在的健
d.get('d',0) # 0
修改
- d[健] = 值
- d.update({健:值,健:值})
d = {'a':1,'b':2,'c':3}
# d[健] = 值
d['a'] = 4
print(d) # {'a': 4, 'b': 2, 'c': 3}
# d.update({健:值,健:值})
d.update({'b':5,'c':6,'d':7})
print(d) # {'a': 4, 'b': 5, 'c': 6, 'd': 7}
删除
- d.pop(健) 返回:值
- del d[健] 返回:无
d = {'a':1,'b':2,'c':3}
# d.pop(健)
d1 = d.pop('a')
print(d1) # 1
print(d) # {'b': 2, 'c': 3}
# del d[健]
del d['b']
print(d) # {'c': 3}
# 删除多个键值对
d = {'a':1,'b':2,'c':3}
del_keys = ['a','b']
for k in del_keys:
del d[k]
print(d) # {'c': 3}
集合
特点
- 无序,不可以下标索引
- 不重复,可用于去重
创建
a = set()
b = {3,1,2}
增删
a = {3,2,1}
a.add(4)
a.pop()
a.remove(1)
set间的操作
a = {1,2,3,4,5,6,7}
b = {5,6,7,8,9,10}
# a|b:a、b总和
print(a|b)
# a&b:a、b共有
print(a&b)
# a-b:a有、b没有
print(a-b)
# a.issubset(b):a是否是b子串
{1,2}.issubset(a)
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
{5, 6, 7}
{1, 2, 3, 4}
函数
自定义函数
- 调用时,位置参数要放前面
- 调用时,*号后面为关键字参数
- 定义时,默认参数位于位置参数后
# 有参无返回值
def print_range_of(start,end):
for i in range(start,end+1):
print(i,end=' ')
print_range_of(1,10)
# 任意多参数:*或**
def sum_of(*para):
start,end = para
sum_of(1,10)
def sum_of(**para):
start = para['start']
end = para['end']
sum_of(start=1,end=10) # 关键字调用
# *号后面关键字参数
def student(name,*,add):
print(f"姓名:{name},地址:{add}")
student("圆圆",add="湖南")
常用函数
eval():将输入的字符串转为对应的数据类型
split(’ '):字符串以‘ ’进行分隔为列表
a = '1 2 3'
print(a.split(" "))
print(type(a.split(" ")))
['1', '2', '3']
<class 'list'>
range(1,10)
print(list(range(1,10))) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(range(1,10)) # range(1, 10)
lambda
def max_len(*lists):
return max(*lists,key=lambda v:len(v))
max_len([3,2,1],[2],[1,2,3,4,5])
# lambda v:len(v)等价于
def f(v):
return len(v)