python代码学习1

\n 换行符号

\r 回车

\b 后退一个格

\t 制表符(4个字符为一组,当不字符被占有时,重新生成一个制表符。如果被占据,不满4个字符时,生成剩余部分空格。)

#原字符 不希望字符串中转义字符起作用,字符串前加r或R
print(r'hello \r \t world')
import keyword#查询关键字
print(keyword.kwlist)
print(0b101)#0b是二进制
print(0o21)#0o是八进制
print(0x21)#0x是十六进制
n1 = 1.1
n2 = 2.2
print(n1+n2)#3.3000000000000003 二进制存储,存储浮点数有误差
from decimal import Decimal
print(Decimal('1.1')+Decimal('1.2'))#2.3
print(1%3)#取余
print(11//2)#整除
print(2**3)#次方

for 和while 使用else,但运行中没有遇到break时,循环正常循环次数后,就会执行else语句。

for item in range(3):
    pwd = input('输入密码')
    if pwd == '9999':
        print('密码正确')
        break
    else:
        print('密码错误')
else:
    print('三次密码错误')
a = 0
while a < 3:
    pwd = input('输入密码')
    if pwd == '999':
        print('密码正确')
        break
    else:
        print('密码不正确')
    a+=1
else:
    print('密码三次输出错误')

二重循环中break和continue用于控制本层循环。

列表

lst = [ 23,‘SD’,‘EW4’] list内置函数创建列表 lst2 = list([112,313,‘dsd’])

列表元素按顺序有序排列

索引映射唯一数据

列表可以存储重复数据

任意数据类型混存

根据需要动态分配和回收内存

lst = ['hello','world',98,'hello']
print(lst.index('hello'))#如果列表中有相同元素,只返回相同元素的第一个元素索引
print(lst.index('hello',1,4))#从1到3寻找元素

列表名[start:stop:step]左闭右开区间 产生一个新的列表

list[-1: -3:-1]

元素 not in / in 列表名

for i in lst:
    print(i)

append()不产生新列表,在原列表中添加新元素 将列表作为一个元素

extend()将列表中元素作为扩充对象

insert()在列表任意位置添加一个元素

lst = ['hell',3,'dfe']
lst2 = ['hello','world']
lst.append(lst2)
print(lst)
lst.extend(lst2)
print(lst)

['hell', 3, 'dfe', ['hello', 'world'], 'hello', 'world']


#切片添加元素
lst = ['hell',3,'dfe']
lst3 =[True,False,'hello']
lst[1:1]=lst3
print(lst)  ['hell', True, False, 'hello', 3, 'dfe']
lst = [10,20,30,40,50,60,30]
lst.remove(30)#从列表中移除一个元素,如果有重复元素只移除第一个元素
print(lst) [10, 20, 40, 50, 60, 30]

lst.pop(1)#根据索引移除元素 [10, 30, 40, 50, 60,30]
lst.pop()#如果没有索引,则移除最后一个元素[10, 30, 40, 50, 60]
print(lst)

lst[1:3] = []
print(lst) [10, 40, 50, 60, 30]

lst.clear()#清除列表元素
print(lst)

del lst #删除列表
print(lst)
lst = [10,20,30,40]
lst[2] = 100
print(lst) [10, 20, 100, 40]
lst[1:3]=[200,300,400]
print(lst) [10, 200, 300, 400, 40]
lst.sort()#调用列表对象的sort方法,在原列表上升序排列
print(lst)  [10, 20, 30, 40]
lst.sort(reverse=True)降序排列
print(lst)  [40, 30, 20, 10]

lst = [20,40,10,98,54] 
#new_list = sorted(lst,reverse=True)降序排列
new_list = sorted(lst)#产生新的列表进行排序
print(lst)  [20, 40, 10, 98, 54]
print(new_list)  [10, 20, 40, 54, 98]

列表生成式:

lst3 = [i for i in range(1,10)]
print(lst3)

在这里插入图片描述

字典

字典是一个无序序列,以键值对的方式存储 根据hash函数存储位置 存储不可变的序列

键可以不可重复,值可重复,如果出现重复,就会值覆盖 键是不可变对象

空间动态伸缩 会浪费大量空间,用空间换时间的方法。

scores = {'张三':100,'李四':98,'王五':45}
a = dict(name = 'jack',age = 20)
print(scores['张三'])#如果找不到,则为KeyError
print(a['name'])
print(scores.get('张三'))  #如何找不到,则为None
print(scores.get('麻七',99))#如果寻找value不存在,则提供一个默认值
print('张三' in scores)
print('张三'not in scores)
del scores['张三']
print(scores) {'李四': 98, '王五': 45}

scores.clear()#	清空
print(scores) {}
scores['陈六'] = 98
print(scores)  {'张三': 100, '李四': 98, '王五': 45, '陈六': 98}
scores['陈六'] = 100  #修改
print(scores) {'张三': 100, '李四': 98, '王五': 45, '陈六': 100}
keys = scores.keys()
print(keys)#获得所有键值
values = scores.values()
print(values)#获得所有值
items = scores.items()#获得所有键值对
print(items)
for item in scores:
    print(item) 输出所有键
张三
李四
王五
for item in scores:
    print(scores[item],scores.get(item))#获取值的两种方法
100 100
98 98
45 45
items = ['fruit','books','others']
prices = [96,78,85]
d = {item.upper():price for item, price in zip(items,prices)}
print(d)  {'FRUIT': 96, 'BOOKS': 78, 'OTHERS': 85}

在这里插入图片描述

元组

不可变序列 (不可变序列(元组和字符串)没有增删改操作。

可变序列(集合,列表和字典)具有增删改操作,对象地址不发生改变

可变序列

lst = [10,20,30]
print(id(lst))2118426108736
lst.append(100)
print(id(lst))2118426108736

不可变序列

s = 'fdjsf'
print(id(s))  1547348002992
s = s+'de'
print(id(s))  1547351023280

元组

t0 = ('python','world',98)
t1 = 'python','world',98 #省略括号
t3 = tuple(('python','world',98))
#如果只包含一个元组的元素需要使用逗号和小括号
t = (10,)
#空列表
lst=[]
lst1 = list()
#空字典
d ={}
d2 = dict()
#空元组
t4 = ()
t5 = tuple()

为什么将元组设计为不可变序列

在多任务环境下,同时操作对象时不需要加锁

元组中存储的是对象的引用

如果元组中对象本身不可变对象,则不能再引用其他对象

如果元组中对象是可变对象,则可变对象的引用不允许改变,但数据可以改变

在这里插入图片描述

t = (10,[20,30],9)
print(t)
t[1].append(100)
print(t)
t = ('Python','world',98)
for item in t:
    print(item)
Python
world
98

集合

没有value的字典 hash函数计算来存储 存储内容不重复

s = {5,1,2,12,12,51,6,2}
print(s) {1, 2, 51, 5, 6, 12}

s1 = set(range(6))
print(s1){0, 1, 2, 3, 4, 5}

将列表中元素转为集合类型
vs1 = set([1,2,2,4,5])
print(s1)  {1, 2, 4, 5}

将元组元素转为集合类型
s1 = set((1,2,2,4,5))
print(s1) {1, 2, 4, 5}

将字符串元素转为集合类型
s1 = set('python')
print(s1) {'y', 'o', 'p', 't', 'n', 'h'}

将集合转为集合类型
s1 = set({1,2,5,5,6,4})
print(s1) {1, 2, 4, 5, 6}

set()定义新集合,{}定义为字典

s1 = {1,5,2,10,15}
print(10 in s1)
print(100 in s1)
True
False
s1 = {1,5,2,10,15}
s1.add(100) #add一次只添加一个元素
print(s1)
s1.update({200,300,400}) #update一次添加至少一个元素
s1.update([20,30,40])
s1.update((12,33,44))
print(s1) {1, 2, 33, 100, 5, 200, 40, 10, 300, 12, 44, 15, 400, 20, 30}
s1 = {1,5,2,10,15}
s1.remove(10) #一次删除一个指定元素,如果指定的元素不存在 则抛出KeyError
print(s1) {1, 2, 5, 15}
s1.discard(5)#一次删除一个指定元素,如果指定元素不存在,不抛出异常
print(s1) {1, 2, 15}
s1.pop()#一次删除一个任意元素
print(s1) {2, 15}
s1.clear() #清除所有元素
print(s1) set()
s1 = {1,5,2,10,15}
s2 = {1,5,10,15}
print(s1==s2)
print(s1!=s2)
False
True

s1 = {1,5,2,10,15}
s2 = {1,5,10,15}
print(s2.issubset(s1))True

print(s1.issuperset(s2))True

print(s1.isdisjoint(s2))False  有交集为false 没有交集为true

在这里插入图片描述

s1 = {1,5,2,10,15}
s2 = {1,5,10,15}
#(1)交集
print(s1.intersection(s2))
print(s1 & s2)
#(2)并集
print(s1.union(s2))
print(s1 | s2)
#(3)差集
print(s1.difference(s2))
print(s1 - s2)
#(4)对称差
print(s1.symmetric_difference(s2))
print(s1 ^ s2)
s = {i for i in range(10)} 集合生成式
print(s)

在这里插入图片描述
在这里插入图片描述

字符串

不可变字符序列,

字符串具有驻留机制,对相同字符串只保留一份拷贝,后续创建相同字符串时,不会开辟新空间,而是将该字符串的地址赋予新创建的变量。

s = 'hello,hello'
print(s.index('lo'))#查找第一次出现的字符,不存在,则返回ValueError
print(s.find('lo'))#查找第一次出现的字符,不存在,则返回-1
print(s.rindex('lo'))#查找最后一次出现的字符,不存在,则返回ValueError
print(s.rfind('lo'))#查找最后一次出现的字符,不存在,则返回-1

大小写转化操作

s = 'hello,hello'
a = s.upper() #s字符串大小写不变  转化为大写
print(a) HELLO,HELLO 产生一个新的字符串
s = 'hello,hello'
a = s.lower()转换为小写 产生一个新的字符串
print(a) hello,hello 
s = 'hello,Python'
a = s.swapcase() 大小写互换
print(a)HELLO,pYTHON
s = 'hello,Python'
a = s.capitalize()把第一个字符转化为大写,其余转化为小写
print(a)Hello,python
s = 'hello,python'
a = s.title() 把每个单词的第一个字符转化为大写,把其他字符转化为小写
print(a) Hello,Python

字符串内容对齐操作

s = 'hello,python'
print(s.center(20,"*"))#居中对齐
print(s.ljust(20,"*"))#左对齐
print(s.rjust(20,'*'))#右对齐
print(s.zfill(20))#用0进行填充的右对齐

****hello,python****
hello,python********
********hello,python
00000000hello,python

字符串的劈分

s = 'hello python'
lst = s.split()
print(lst)
s = 'hello|world|python'
lst1 = s.split(sep="|")#从左边开始劈分,默认为空格为劈分,sep指定劈分符号 maxsplit为最大劈分次数
print(lst1)
print(s.split(sep='|',maxsplit=1))


print(s.rsplit(sep="|",maxsplit=1))#从右侧开始劈分,默认为空格为劈分,sep指定劈分符号 maxsplit为最大劈分次数

字符串判断方法

在这里插入图片描述

字符串的替换和合并

s = 'hello,python'
print(s.replace('python','java'))被替换字符 替换字符 最大替换次数
hello,java
s = 'hello,python python python'
print(s.replace('python','java',2)) hello,java java python
s = ['hello','java','Python']
print('|'.join(s))  join将列表元组中字符串合成为一个字符串
print(''.join(s))

t = ('hello','java','Python')
print(''.join(t))

print('*'.join('Python'))

hello|java|Python
hellojavaPython
hellojavaPython
P*y*t*h*o*n

字符串比较

print('apple'>'app')
print('apple'>'banana')原始值比较 97>98 False 
True
False

== 比较的是value相等

is 比较的是id是否相等

字符串切片

切片产生新的对象

s = 'hello,Python' 切片[start:end:step]
s1 = s[:5]
s2 = s[6:]
s3 = '!'
print(s1)
print(s2)
print(s1+s3+s2)

hello
Python
hello!Python

print(s[::-1]) nohtyP,olleh

格式化字符串

%为占位符

#(1)%
name = 'aaa'
age = 20
print('我叫%s,今年%d' % (name,age))

{}为占位符

name = 'aaa'
age = 20
print('我叫{0},今年{1}'.format (name,age))
print('{0:.3}'.format(3.14159))# .3表示一共3位数 
print('{0:10.3f}'.format(3.14159)) 10宽度 .3f表示3位小数

f-string为占位符

name = 'aaa'
age = 20
print(f'我叫{name},今年{age}')

print('我叫%10s,今年%.3f' % (name,age)) #10表示宽度 .3浮点数后三位
print('%10.3f'%3.1415926)
我叫       aaa,今年20.000
     3.142

]
s2 = s[6:]
s3 = ‘!’
print(s1)
print(s2)
print(s1+s3+s2)

hello
Python
hello!Python

print(s[::-1]) nohtyP,olleh


## 格式化字符串

%为占位符

#(1)%
name = ‘aaa’
age = 20
print(‘我叫%s,今年%d’ % (name,age))


{}为占位符

name = ‘aaa’
age = 20
print(‘我叫{0},今年{1}’.format (name,age))
print(‘{0:.3}’.format(3.14159))# .3表示一共3位数
print(‘{0:10.3f}’.format(3.14159)) 10宽度 .3f表示3位小数


f-string为占位符

name = ‘aaa’
age = 20
print(f’我叫{name},今年{age}')


print(‘我叫%10s,今年%.3f’ % (name,age)) #10表示宽度 .3浮点数后三位
print(‘%10.3f’%3.1415926)
我叫 aaa,今年20.000
3.142

![在这里插入图片描述](https://img-blog.csdnimg.cn/2e7300dadf204e54bdc923fed3b790ab.png#pic_center)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

St-sun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值