python基础学习(字符串、列表、元组、字典、集合)

一、input

input(“输入:”):用户输入自己内容的入口 变量保存 的是字符串

二、数据类型

python的数据类型 列表(list) 元组(tuple)字典(dict)集合(set)复数(complex)

三、进制及进制转换

a=98
b=0b10110100 #0b开头的是二进制
c=0o34 #0o开头的是八进制
d=0x23 #0x开头表示16进制
calc 打开计算机里面记得计算器 设置里面有程序员入口

#进制转换

a=34
print(bin(a))#2
print(oct(a))#8
print(hex(a))#16
#整数转换
a='13'
print(int(a)+1)
b='1a2c'
y=int(b,16)#把b当做16进制在转换成整数
c='13.14'
print(float(c))#转换成浮点数
print(str(c))#转换成字符串
print(bool(c))#转换成布尔值
#数字只有0转化成布尔值是false
#字符串中只有''和“”转换成false
#none转换成布尔值是false

四、 算数运算符

算数运算符±/除留小数点 **幂运算 //整除 %取余
字符串里支持+
,+用于连接两个字符串 *用于重复多次
print(‘hello’*2)

特殊赋值

a=b=c=d=20
a,b=m,n
c='h','n','m'

五、 逻辑运算符

and or

六、pass关键字

age=int(input('请输入年龄:'))
if age<18:
pass#pass没有意思,仅用于占位,使得程序不报错
print('hello')

七、for…in循环

range 内置用于生成指定区间的整数序列
#in后面必须是一个可迭代对象
#可迭代对象 字符串、列表、元组、集合、range

for i in range(0,10):
    print(i)#输出0-9
for y in 'hello':
    print(y) #输出h e l l o

for …else
#当循环里面的break不被执行的时候,就会执行else
#素数除了1和他本身之外,不能被其他整除

for i in range(101,201):
    for j in range(2,i):
        if i%j==0:
            #print('合数')
            break
    else:
        print(i,'是素数')

八、字符串

切片 m[start: end:step]

#str list tuple 可以通过下标类操作数据
word = 'zhangsan'
print(word[4])
#切片  就是从字符串里赋值一段指定的内容,生成新的字符串
#切片语法 ,m[start:end:step]
m='ahdiehvbjgirgllwjojqbvvvheih'
print(m[5:10:1])#包含开始,不包含结束
print(m[5:])#复制到最后
print(m[:9])#从头开始复制
print(m[15:3:-1])#-1从右向左找jwlgrigjbvhe
print(m[::-1])#倒过来复制
print(m[::])#复制

获取字符串长度

#使用内置函数获取字符串长度
print(len(m))

获取指定字符的下标,判断是否是数字字母

print(m.find('l'))#字符不存在-1   13
print(m.find('l',4,9))#从4开始到9找
print(m.index('l'))#字符不存在报错   13
print(m.rfind('l'))#14   找最大的下标
print(m.startswith('a'))#判断开头是不是aTrue
print(m.endswith('0'))#判断开头是不是0  False
print(m.isalpha())#字符串是不是 字母  True
print(m.isdigit())#盘点字符串是不是数字  False
print(m.isalnum())#判断是否由数字字母组成
print(m.count('l'))#2  计算l出现的次数
if m.isdigit():
    print(m)
else:
  print('no')

大小写

print(m.capitalize())#让第一个单词大写
print(m.upper())#全部大写
print(m.lower())#全部小写
print('hell morning'.title())#每一个单词首字母大写

加空格去空格

print('kk'.ljust(10,'+'))#占10个字符长度,不够用用+补齐Hell Morning  kk++++++++
print('kk'.ljust(10))#占10个字符长度,不够用用空格补齐(右侧加)
print('kk'.rjust(10,'+'))#占10个字符长度,不够用用+补齐(左侧加)++++++++kk
print('kk'.center(10,'+'))#占10个字符长度,不够用用+补齐(两侧加)++++kk++++
print('       kk   '.lstrip())#去左边空格
print('       kk   '.rstrip())#去右边空格
print('       kk   '.strip())#去空格

replace 替换

word='hello'
x=word.replace('l','x')#hexxo
print(word)#word  字符串不可变
print(x)#hexxo

字符串分割
#split rsplit splitlines按行分割 换行符 partition 指定字符作为分割 rpartition
split 将字符串切割成一个列表

z= "zhang,li,wnag,huang,jin"
#让z变成['zhang','li','wnag','huang','jin']
y=z.split(',')
print(y)#['zhang', 'li', 'wnag', 'huang', 'jin']
k=z.split(',',2)#从左面分两个
print(k)#['zhang', 'li', 'wnag,huang,jin']
p=z.rsplit(',',2)#从右分两个
print(p)#['zhang,li,wnag', 'huang', 'jin']

join 将列表转换成字符串[‘zhang,li,wnag’, ‘huang’, ‘jin’]

print(','.join(y))#zhang,li,wnag,huang,jin

字符串编码
ASCII

print(ord('a'))#97
print(chr(65))#A
print(ord('你'))#20320

#GBK 国标扩,汉子占两个字节,简体中文UTF-8统一编码,汉字占3个字节 BIGS繁体中文

print('你'.encode('gbk'))#b'\xc4\xe3' 2个字节    50403
print(0xc4e3)#50403
print('你'.encode('utf8'))#b'\xe4\xbd\xa0' 3个字节
print(bin(0xe4bda0))#11100100 10111101 10100000
y='你好'.encode('utf8')
print(y)#b'\xe4\xbd\xa0\xe5\xa5\xbd'
print(y.decode('utf8'))#你好

#in 和not in 运算符

world='hello'
x=input('输入一个字符:')
if x in world:
    print('1')
else:
    print('0')
if x not in world:
    print('0')
else:
    print('1')

#格式化打印字符串

name='zhang san '
age=18
print('我的名字是',name,'今年',age,'岁',sep='')#我的名字是zhang san 今年18岁
#%s字符串 %f %nd 打印显示n位,不够前面用空格补齐  %.nf保留小数点
print('我的名字是%s,今年%d岁'%(name,age))#我的名字是zhang san ,今年18岁
print('我的名字是%s,今年%3d岁'%(name,age))#我的名字是zhang san ,今年 18岁
print('我的名字是%s,今年%03d岁'%(name,age))#我的名字是zhang san ,今年018岁
print('我的名字是%s,今年%-3d岁'%(name,age))#我的名字是zhang san ,今年18 岁
print('我的名字是%s,今年%.2f岁'%(name,15.600))#我的名字是zhang san ,今年15.60岁

#format

x='我是{},我叫{}'.format('zhang',18)
print(x)
#根据数字顺序输出
y='我是{1},我叫{0}'.format(18,'zgabf')
print(y)#我是zgabf,我叫18
z='我是{name},我叫{age}'.format(age=18,name='zgabf')
print(z)#我是zgabf,我叫18
j=['zhang','18']
print('我是{},我叫{}'.format(*j))
print('我是{},我叫{}'.format(j[0],j[1]))#我是zhang,我叫18
info={'name':'zhang','age':'18'}
print('我是{name},我叫{age}'.format(**info) )#我是zhang,我叫18

九、列表

#列表由多个元素构成, 用‘,’分割

name = ['张三','张明','小红','王五','李四']
print(name[3])#王五
name[1]='校长'
print(name)#['张三', '校长', '小红', '王五', '李四']

#切片

print(name[2:5])#['小红', '王五', '李四']

#列表的增删改查
#增加append、insert、extend

name.append('彩虹')
print(name)#append在列表后面加['张三', '校长', '小红', '王五', '李四', '彩虹']
name.insert(3,'黄花')#在3后面插入
print(name)#['张三', '校长', '小红', '黄花', '王五', '李四', '彩虹']
x=['嘿嘿','绿绿']
name.extend(x)#添加一个列表
print(name)#['张三', '校长', '小红', '黄花', '王五', '李四', '彩虹', '嘿嘿', '绿绿']

#删除 pop remove clear

x=name.pop()#删除列表最后一个元素,并且返回
print(x)#绿绿
print(name)#['张三', '校长', '小红', '黄花', '王五', '李四', '彩虹', '嘿嘿']
x=name.pop(3)#删除指定位置数据
print(x)#黄花
#remove删除指定元素
name.remove('张三')#如果元素不存在,则报错
print(name)#['校长', '小红', '王五', '李四', '彩虹', '嘿嘿']
#clear用来清空列表
#name.clear()

#查询 index,count

print(name.index('校长'))#0  ,元素不存在报错
print(name.count('校长'))#1

#修改 用下标

name[0]='小张'
print(name)

#遍历列表

for k in name:
    print(k)
i=0
while i <len(name):
    print(name[i])
    i+=1

#交换两个标量的值

a=10
b=20
a, b = b, a

#调用列表的sort方法对列表进行排序

num=['1','2','5','6']
num.sort()
print(num)#['1', '2', '5', '6']
num.sort(reverse=True)
print(num)#['6', '5', '2', '1']
nums=sorted(num)#生成新的排序列表
print(nums)#['1', '2', '5', '6']

#reverse 反转

names=['校长', '小红', '王五', '李四', '彩虹', '嘿嘿']
names.reverse()
print(names)#['嘿嘿', '彩虹', '李四', '王五', '小红', '校长']

#copy列表复制

z=names.copy()
print(z)
#index求下标
print(names.index('校长'))

十、元组

#元组用()表述元组 元组与列表区别 :列表可以改变,元组不可
#元组仅仅可以查询

num=(1,2,6,5,8,9,4)
wh=[1,2,3,5,8,9]
print(num[3])#5
print(num.count(4))#1
print(num.index(5))#3

#表示只有一个元组的方式 要加上一个,

age=(18,)

#元组转换成列表 列表转换元组

print(list(num))#[1, 2, 6, 5, 8, 9, 4]
print(tuple(wh))#(1, 2, 3, 5, 8, 9)

十一、字典

#字典 键值对形式

person={'name':'zhangsan',
        'age':30,
        'chinese':'102',
        'Eng':'65',
        'hobby':['篮球','唱歌']
        }

#增删改查
#改增

person['name']='小黄'#如果key不存在会添加一个新的key
print(person)#{'name': '小黄', 'age': 30, 'chinese': '102', 'Eng': '65', 'hobby': ['篮球', '唱歌']}

#删除pop.clear del

person.pop('name')
print(person)#{'age': 30, 'chinese': '102', 'Eng': '65', 'hobby': ['篮球', '唱歌']}
#person.clear()
del person['hobby']

#update 将两个字典合成一个字典
#列表可以通过extend将两个列表合并成一个列表

pe1={'name': '小黄', 'age': 30, 'chinese': '102'}
pe2={'namer': '小黄', 'ager': 30}
pe1.update(pe2)
print(pe1)#{'name': '小黄', 'age': 30, 'chinese': '102', 'namer': '小黄', 'ager': 30}

#遍历

#方式一
for x in person:
    print(x,'=',person[x])
#方式二
 #获取key,遍历key
print(person.keys())
for k in person.keys():
    print(k,'=',person[k])
#方式三
for v in person.values():
    print(v)
#方式4
print(person.items())#dict_items([('age', 30), ('chinese', '102'), ('Eng', '65'), ('hobby', ['篮球', '唱歌'])])
for item in person.items():
    print(item)#输出独立键值对
#方式5(最好)
for k,v in person.items():
    print(k,'=',v)

十二、集合

#集合 不重复无序 ,可以使用大括号{}或者set表示

pperson={'name':'zhangsan',
        'age':30,
        'chinese':'102',
        'Eng':'65',
        'hobby':['篮球','唱歌']
        }#字典
x={1,'good','jk'}#集合   集合如果有重复会自动删除

#增删改查
#增加 add

x.add('hfs')
print(x)#{1, 'jk', 'good', 'hfs'}

#删除clear remove pop

#x.clear()
#print(x.pop())  随机删除
x.remove('hfs')#删除指定元素
print(x)#{1, 'jk', 'good'}

#union连接

y=x.union({'lkj','hjjd'})#将集合合并生成一个新的集合
print(y)#{1, 'lkj', 'hjjd', 'good', 'jk'}

#update连接

x.update({'dh','eiu'})
print(x)#{'jk', 1, 'dh', 'good', 'eiu'}

十三、eval、json

#eval可以执行字符串里面的代码

a='input("请输入:")'
b='1+1'
print(eval(b))#2

#json 把列表元组字典转换成json字符串

import json
m=json.dumps(pperson)##json   s把列表元组字典转换成json字符串
print(m)#{"name": "zhangsan", "age": 30, "chinese": "102", "Eng": "65", "hobby": ["\u7bee\u7403", "\u5531\u6b4c"]}
n='{"name": "zhangsan", "age": 30, "chinese": "102", "Eng": "65", "hobby": ["\u7bee\u7403", "\u5531\u6b4c"]}'
s=json.loads(n)#json转换成字典列表等
print(s)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值