字符串、列表、推导式
python数据类型:
#可变数据: 列表List、字典Dictionary、集合Set 。
#不可变数据:数值Number(int、float、bool、complex)、字符串string、元组Tuple;
序列:就是一组数据,有它自己的顺序,里面的每个数值都对应一个编号,称为索引;可通过索引查找、访问;
由于字典Dictionary、集合Set没有顺序,所以不能用索引、切片、相加、相乘操作;
编码,就是把实际的文字、数字或其他字符,转换成一一对应的二进制数进行标记和表示,相当于翻译成计算机能看懂和接收的数据;
ASCII编码:
#就是将8位=1个字节的二进制数,对应256种信息或字符;而最高位固定为0,则能表示128个实际的字符;这128个字符,其中的33个字符是控制字符,95个是可显字符;这种对应起来的字符,就是ASCII编码;
#python的默认编码组,是ASCII格式;
中文编码:
#GB2312是针对汉字,而后来创建的GBK也包含了少数民族的字体、繁体字;
Unicode :
#是各国通用的字符编码表,各国语言的编码统一编在这套体系,避免冲突;
#Utf-8、16、32是规定了Unicode 的存储方式,比如Utf-8是把Unicode 字符根据不同的数字大小,编码成1~6个字节;
#Utf-8兼容ASCII,不需要考虑大小端的问题,Utf-16的劣势;
#GBK和Utf-8的区别:
#GBK专门针对中文编码,是双字节的,中英文都是双字节;做中文程序开发用GBK,因为Utf-8编码的中文使用了三字节,比较费空间;
#如果是英文网站开发,用Utf-8,因为是单字节;
字符串 string 编码、解码的含义:
#字符串编码:encode;解码:decode
#encode 就是把字符串编成Python 语言用的格式,是unicode,bytes形式;
#decode 就是把python语言的格式,解码成我们能看懂的字符;
#也就是说,python相当于计算机和人类语言之间的翻译官;python既能把字符串encode成unicode,给计算机用,也能把unicode格式decode成人类看得懂的字符串,给人类用;
字符串的格式化输出方式: % format
#例子:
a=11
b=22
print('我%d岁,你%d岁' % (a,b))
#输出结果: 我11岁,你22岁
print('我是{}岁,你是{}岁'.format(a,b))
#输出结果: 我是11岁,你是22岁
name="Aimy"
age=23
print(f'名字是{name},年龄是{age}')
#输出结果: 名字是Aimy,年龄是23
字符串常见操作:
#find 、index 、count 、replace 、slipt 、capitalize 、title 、startswith 、endswith 、lower 、upper 、ljust 、rjust 、center 、lstrip 、rstrip 、strip 、rfind 、rindex 、partition 、rpatition 、isalpha 、isdigit 、isalnum 、isspace 、
a=3.141592
print('{:.2f}'.format(a))
#运行结果:3.14
列表相关知识:
L1=[1,'a',[1,2,'c'],{'e':'f','as':'df'},'dfsf']
L2=['df',4]
print(L1+L2)
#输出结果:[1, 'a', [1, 2, 'c'], {'e': 'f', 'as': 'df'}, 'dfsf', 'df', 4]
print(L1[3])
#输出结果:{'e':'f','as':'df'}
注意区别:append、extend:
L1=[1,'a',[1,2,'c'],{'e':'f','as':'df'},'dfsf']
L1.append(L2)
print(L1)#输出结果:[1, 'a', [1, 2, 'c'], {'e': 'f', 'as': 'df'}, 'dfsf', ['df', 4]]
L1=[1,'a',[1,2,'c'],{'e':'f','as':'df'},'dfsf']
L1.extend(L2)
print(L1)#输出结果:[1, 'a', [1, 2, 'c'], {'e': 'f', 'as': 'df'}, 'dfsf', 'df', 4]
#插队:insert
a = [1, 2, 3, 4]
a.insert(2, 'b') # 在下标为2的位置插入'b'
print(a)
#运行结果:
[1, 2, 'b', 3, 4]
列表应用例题:随机分配老师工位
#一个学校,有3个办公室,现在有6个老师等待工位分配,请编写程序,完成随机分配
#规则:每个办公室分配2个老师;老师是随机分配的;每个办公室分配的老师要print出来;
import random
inschooloffice=[[],[],[]]
techers=['xiaozhao','xiaoqian','xiaosun','xiaoli','xiaozhou','xiaowu']#赵、钱、孙、李、周、吴
random.shuffle(techers)
print(techers)#输出的结果是随机顺序的techers列表;
运行结果:[‘xiaozhao’, ‘xiaosun’, ‘xiaoqian’, ‘xiaoli’, ‘xiaowu’, ‘xiaozhou’]
i=0
j=0
for m in range (3):
for k in range (2):
inschooloffice[i].append(techers[j])
j+=1
i+=1
print(inschooloffice)
#运行结果:[[‘xiaozhao’, ‘xiaosun’], [‘xiaoqian’, ‘xiaoli’], [‘xiaowu’, ‘xiaozhou’]]
算术练习:
#要求:
#1.提供10道题,两个数的加减乘除运算(两位数的);根据题目,输入答案;自动判断答案是否正确,进行算术测验;
#2.显示做了几道题、还剩几道题;
#3.题目随机,运算符随机,数字随机;
#4.判断结果是否正确,正确的话分数+1
#5.显示结果,打印分数;
#草稿:
#n1=random.randint(0,100)
#n2=random.randint(1,100)
#ope=‘±*/’
#使用random.choice随机选择运算符;
#输入的计算结果和答案比较,正确,则+1分;
#最后总分数;
import random
ope= ['+', '-', '*', '/']
j=0
for i in range (10):
n1=random.randint(0,100)
n2=random.randint(1,100)#当n2做除数时0不能作为分母;
cope=random.choice(ope)
print('题目%d ==> %d %s %d=' % (i+1,n1,cope,n2))
if cope == '+' :
comp=n1 + n2
elif cope == '-' :
comp=n1 - n2
elif cope == '*' :
comp=n1*n2
else :
cope == '/'
comp2 = n1 / n2
#comp = float(str(comp2).split('.')[0] + '.' + str(comp2).split('.')[1][:2])#小数取两位:用切片的方法;
comp =round(comp2,2)#小数取两位:round方法;
pers=int(input('请输入答案:'))
if comp == pers:
print('答案正确,加一分;')
j+=1
else:
print('答案错误,不得分;')
print('正确答案是:%s' % comp)
print('你的最终分数是:%d 分' % j)