1.编码
1.ASCII:最早的计算机编码ASCII。美国人创建的。包含了英文字母(大写字母,小写字母)。数字,标点等特殊字符
128个码位,2**7,一个字节
2.GBK:国标码占用两个字节,16位,2个字节.对应ASCII码.弊端只能中国用,日本不能用,万用国码Unicode提出.Unicode开始设计每个字符两个字节,中国汉字仍然无法进行编码,扩充成32位.Unicode可以表示40多亿,优点:编码任何国家的文字,缺点:浪费空间.
3.Unicode:万国码 usc-2 16位 2字节 ucs-4 32位 4个字节
4.UTF-8:写程序固定死要存储的编码格式
**举例**
ascii:01100001
gbk:00000000 01100001
unicode:00000000 00000000 00000000 101100001
utf-8:01100001 英文 8bit 1个字节
欧洲文字 16bit 2个字节
中文 24bit 3个字节
换算:
8bit => 1 byte
1024byte =>1kb
1024kb =>1M
1024M => 1G
1024GB =>1TB
1024TB =>1PB
2.bit_length().计算二进制长度
a=3 #11
print(a.bit_length())
3.bool
取值只有True False,bool没有操作
转换问题:
bool转换成数字:True=1 False=0
数字转换成bool:0=False !0=True
## While 1:
print(‘a’) ##结果是a循环,1的效率比True高
字符转换成bool:空为False,非空为True
s='你好'
if s:
print('哈哈')
else:
print('呵呵')
#结果是哈哈
s=''
if s:
print('哈哈')
else:
print('呵呵')
#结果是呵呵
m=None
if m:
print('a')
else:
print('b')
##结果b,None表示空
4.字符串(str)
4.1索引和切片
1.索引:下标从0开始
s='五十六个民族'
print(s[3]) ##个
print(s[12]) ##string index out of range
print(s[-3]) ##个 s[-0]=s[0]
##通过索引获取的内容还是字符串
**2.切片**
##语法 s[起始位置:结束位置]
#实际s[起始位置,结束位置)
s='五十六个民族'
print(s[4:])#[4:]默认到结尾,同理[:4]从头开始
s2=s[0:3]+s[4:]
print(s2)#五十六民族
print(s[-2:])#民族
**#步长**
#语法:s[起始位置:结束位置:步长]
s='五十六个民族,五十六支花'
s1=s[1:5:2] #从1开始,到5结束,每两个取一个 #十个
s2=s[6:2:-1]#表示反着来 #,族民个
s3=s[7::-2]#五族个十
s4=s[-1:-6:-2]#花六五
4.2字符串的相关操作方法
字符串是不可变的对象,任何操作对源字符串是不会有任何影响的
1.大小转换
s.capitalize()#首字母大写
s.lower()#全部转换成小写
s.upper()#全部转换成大写********重要********
#应用:校验用户驶入的验证码是否合法
verify_code ='abDe'
user_verify_code=input('请输入验证码:')
if verify_code.upper() == user_verify_code.upper():
print('success')
else:
print('false')
s.swapcase()#大小写相互转换
s.casefold()#转换成小写,对所有字符都有效(包括东欧)
s.title()#被特殊字符分隔开的首字母大写
**2.切片**
#延长
s.center(int)#加[数字]空白空格,原值在中间,拉长成int字符
s='abc'
print(s.center(10,'*'))
#去空格
s.strip()#去空格#首尾的!!
s.strip('abc')##左右两端的内容,中间的不管''中每个字符独立
s.lstrip()#左边
s.rstrip()#右边
#替换
s.replace('a','b',2,count=int)#将a换成b,替换两个,如果不写数字默认全部替换
#用于去掉字符串中间的空格
s='with the repid development of ecnomy'
s1=s.replace(' ','')
print(s1)
#切割
s='a_b_c_d_e'
s1=s.split("_")
print(s1)#['a', 'b', 'c', 'd', 'e'],列表,字符串.贴边切空字符
**3.格式化输出**
s1="My name is %s,i'm %d years old,i love %s" % ('Mary',18,'Biber')
s1="My name is {},i'm {} years old,i love {}".format('Mary',18,'Biber')
s1="My name is {0},i'm {2} years old,i love {1}".format('Mary','Biber',18)
s1="My name is {name},i'm {age} years old,i love {singer}".format(name='Mary',age=18,singer='Biber')
**4.查找**
s='我叫sylar,我喜欢Python,java,c等编程语言'
ret1=s.startswith('sylar')#判断是否以sylar开头
ret2=s.startswith('我叫sylar')
print(ret1,ret2)
ret3=s.endswith('语言')
ret4=s.endswith('语言.')
print(ret3,ret4)
ret5=s.count('a')#查找a出现的次数
ret6=s.find('sylar')#查找''出现的位置
ret7=s.find('tory')#如果没有返回-1
ret8=s.index()#index内容不存在报错:substring not found
5.条件判断
s1='123.16'
s2='abc'
s3='_abc!@'
s.isalnum()#判断是否字母组成
s.isalpha()
s.isdigit()#数字组成,不包括小数点
s.isdecimal()#
s.isnumeric()#汉字也可以识别,繁体也可以
6.计算字符串长度
s='abcdefg'
i=len(s)
print(i)
1=s.__len__()#len函数执行的时候执行的是它
#把字符串从头到尾进行遍历
s= 'abcdefg'
#1.用while循环进行遍历
i=0
while i<=s.len():
print(s[i])
continue
#2.用for遍历字符串,优势简单,劣势没有索引
for c in s:#把s中的每一个字符交给前面的c
print(c)
语法:
for bianliang in 可迭代对象:
循环体
课后 作业:
1.有变量name='aleX leNb'
1)移除空格:
s=' aleX leNb '
print(s.strip())
2)
s='aleX leNb'
print(s.lstrip('al'))
3)
s='aleX leNb'
print(s.rstrip('Nb'))
4)
s='aleX leNb'
s1=s.lstrip('a')
s2=s1.rstrip('b')
print(s2)
5)
s='aleX leNb'
print(s.startswith('al'))
6)
s='aleX leNb'
print(s.endswith('Nb'))
7)
s='aleX leNb'
print(s.replace('l','p'))
8)
print(s.replace('l','p',1))
9)
print(s.split('l'))
10)
print(s.split('l',1))
11)
print(s.upper())
12)
print(s.lower())
13)
print(s.capitalize('a'))
14)
print(s.count('l'))
15)
print(s.count('l',4))
16)
print(s.index('N'))
17)
print(s.find('N'))
18)
print(s.find('X le'))
19)
print(s[1])
20)
print(s[:4])
21)
print(s[-2:])
22)
count=0
while count<len(s):
if s[count] == 'e':
print(count)
count=count+1
2.s='123a4b5c'
1)s1=s[:3]
2)s2=s[3:6]
3)s3=s[::2]
4)s4=s[1:6:2]
5)s5=s[-1]
6)s6=s[5::-2]
3.
s='asdfer'
count=0
while count<len(s):
print(s[count])
count=count+1
for c in s:
print(c)
4.
for c in s:
print(s)
5.
for c in s:
print(c,'sb')
6.
s='321'
for c in s:
print('倒计时%s秒' %c)
print('出发!')
7&8
content=input('请输入内容:')
content1=content.replace(' ','')
num=content1.split('+')
count=0
sum=0
while count<len(num):
sum=sum+int(s[count])
count=count+1
print(sum)
9.
content=input('请输入内容:')
count=0
num=0
while count<len(content):
if content[count].isdigit():
num=num+1
count=count+1
print(num)
10.
while 1:
s=input('请输入A或B或C:')
alpha=s.upper()
if alpha=='A':
a1=input('选择公交车还是步行?')
if a1 =='公交车':
print('10分钟到家')
break
else:
print('20分钟到家')
break
elif alpha == 'B':
print('走小路回家')
break
elif alpha== 'C' :
c1=input('选择游戏厅还是网吧?')
if c1 == '游戏厅':
print('一个半小时到家,爸爸在家')
continue
else:
print('两个小时到家,妈妈已经做好战斗准备')
continue
11.太难了明天写
12:
s='上海自来水来自海上'
s1=s[::-1]
if s==s1:
print('是回文')
else:
print('不是回文')
13.
s=input('请输入内容:')
count=0
num_lower=0
num_upper=0
num_digit=0
num_symbol=0
while count<len(s):
if s[count].islower():
num_lower=num_lower+1
elif s[count].isupper():
num_upper=num_upper+1
elif s[count].isdigit():
num_digit=num_digit+1
else:
num_symbol=num_symbol+1
count=count+1
print('小写字母的个数%d' %num_lower)
print('大写字母的个数%d' %num_upper)
print('数字的个数%d' %num_digit)
print('符号的个数%d' %num_symbol)
14.
name=input('姓名:')
place=input('地点')
hobby=input('爱好:')
print('敬爱可亲的{0},喜欢在{1}地方干{2}'.format(name,place,hobby))