一、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)