python中输出变量对应值的字符_第2章Python基础-字符编码
数据类型字符编码字符串。。。
1.简述位、字节的关系
位(bit)是计算机中最⼩的表⽰单元,数据传输是以“位”为单位的,1bit缩写为1b
字节(Byte)是计算机中最⼩的存储单位,1Byte缩写为1B
8bit = 1Byte
2.简述ascii、unicode、uft-8、gbk的关系
美国制定了⼀套字符编码,对英语字符与⼆进制位之间的关系做了统⼀规定,这被称为ASCII码,由1个字节组成,最多⽀持2**8=256个字符
Unicode是国际组织制定的可以容纳世界上所有⽂字和符号的字符编码⽅案,现代操作系统和⼤多数编程语⾔都直接⽀持Unicode,不管是英⽂字母还是汉字,通常由2个字节组成(只有很⽣僻的字符才会被编码成4个字节),最多⽀持2**16=65536个字符,如果⽂本基本全部都是英⽂的话,⽤Unicode编码⽐ASCII编码需要多⼀倍的存储空间,所以本着节约精神,出现了UTF-8编码
UTF-8最⼤的特点就是它是⼀种可变长的编码⽅式,通常由1-3个字节组成,常⽤的英⽂字母被编码成1个字节,汉字通常是3个字节(只有很⽣僻的字符才会被编码成4-6个字节),同时ASCII编码可以看成UTF-8编码的⼀部分(英⽂字符),所以只⽀持ASCII编码的软件可以在UTF-8编码下运⾏
GBK是汉字国标扩展码,由于GBK同时也涵盖了Unicode所有CJK汉字,所以也可以和Unicode做⼀⼀对应。Windows默认编码GBK,中⽂占2个字节
现在计算机系统通⽤的字符编码⼯作⽅式:在计算机内存中,统⼀使⽤Unicode编码,当需要保存到硬盘或需要传输时候,就转换为UTF-8编码
3.请写出“李杰”分别⽤utf-8和gbk编码所占的位数
UTF-8中⼀个英⽂占1个字节,⼀个中⽂占3个字节,此处“李杰”占6个字节
GBK中⼀个中⽂占2个字节,此处“李杰”占4个字符
4.如有⼀个变量n1 = 5,请使⽤int提供的⽅法,得到该变量最少可以⽤多少个⼆进制位表⽰?
#!/usr/bin/env python
#-*- encoding:utf-8 -*-
n1 = 5
v = int.bit_length(n1)
print(v)
5.布尔值分别有什么?
True和False
"" [] () {} => False #空字符串,空列表,空元祖,空字典
"有内容" => True
0 => False
其他数字 => True
6.阅读代码,请写出执⾏结果
a = "alex"b=a.capitalize()print(a)print(b)
View Code
执⾏结果:
alex
Alex
#⾸字母变⼤写,其他字母变⼩写
7.写代码,有如下变量,请按照要求实现每个功能
name=" aleX"
a.移除name变量对应的值两边的空格,并输出移除后的内容
print(name.strip())
b.判断name变量对应的值是否以"al"开头,并输出结果
print(name.startswith('al'),name)
c.判断name变量对应的值是否以"X"结尾,并输出结果
dswith('X'),name)
d.将name变量对应的值中的"l"替换为"p",并输出结果
place('l','p'))
e.将name变量对应的值中的"l"分割,并输出结果。
print(name.split('l'))
f.请问,上⼀题l分割之后得到是什么类型(可选)?
#列表
g.将name变量对应的值变⼤写,并输出结果
print(name.upper())
h.将name变量对应的值变⼩写,并输出结果
print(name.lower())
i.请输出name变量对应的值的第2个字符?
print(name[1])
j.请输出name变量对应的值的前3个字符?
print(name[:3])
k.请输出name变量对应的值的后2个字符?
print(name[-2:]) #-1代表最后⼀个字符,-2代表倒数第⼆个字符
l.请输出name变量对应的值中"e"所在的索引位置?
print(name.index('e'))
m.获取⼦序列,仅不包含最后⼀个字符。如:oldboy 则获取oldbo;root则获取roo print(name.rstrip(name[-1:]))
8.字符串是否可迭代?如可以请使⽤ for 循环每⼀个元素?
#可迭代对象==可以被for进⾏循环获取
name = "aleX"
for i in name:
print(i)
9.请⽤代码实现:
a.利⽤下划线将列表的每⼀个元素拼接成字符串,li = "alexericrain"
li = "alexericrain"
print('_'.join(li))
b.利⽤下划线将列表的每⼀个元素拼接成字符串,li = ['alex','eric','rain']
li = ['alex','eric','rain']
print('_'.join(li))
10.Python2中的range和Python3中的range的区别?
Python2中的range返回的是⼀个列表,直接创建内容
Python3中的range返回的是⼀个迭代值,只有for循环时,内容才⼀个⼀个创建11.实现⼀个整数加法计算器:
如:
content = input('请输⼊内容:') #如:5+9
#⽅法⼀:
content = input('请输⼊内容:')
print(eval(content))
#⽅法⼆:
content = input('请输⼊内容:') #5+9
n1,n2 = content.split('+')
n1 = int(n1)
n2 = int(n2)
print(n1+n2)
12.计算⽤户输⼊的内容中有⼏个⼗进制数?⼏个字母?
如:
content=input('请输⼊内容:') #如: asduiaf878123jkjsfd-213928 content = input('请输⼊内容:')
number_of_decimal = 0
number_of_alpha = 0
for i in content:
if i.isdecimal():
number_of_decimal += 1
if i.isalpha():
number_of_alpha += 1
print('⼗进制数的数量:', number_of_decimal, '字母的数量:', number_of_alpha) content=input('请输⼊内容:')
number_of_decimal = 0
number_of_alpha = 0
for i in range(len(content)):
if content[i].isdecimal():
number_of_decimal += 1
if content[i].isalpha():
number_of_alpha += 1
print('⼗进制数的数量:',number_of_decimal,'字母的数量:',number_of_alpha)
13.简述int和9等数字以及str和"xxoo"等字符串的关系?
int,str 是类
0和"xxoo"是根据相应的类创建的对象
14.制作随机验证码,不区分⼤⼩写。
流程:
数字转unicode编码- ⽤户执⾏程序
- 给⽤户显⽰需要输⼊的验证码
- ⽤户输⼊的值
⽤户输⼊的值和显⽰的值相同时显⽰正确信息;否则继续⽣成随机验证码继续等待⽤户输⼊⽣成随机验证码事例:
defcheck_code():importrandom
checkcode= ''
for i in range(4):
current= random.randrange(0,4)if current !=i:
temp= chr(random.randint(65,90))else:
temp= random.randint(0,9)
checkcode+=str(temp)returncheckcode
code=check_code()print(code)
View Code
#!/usr/bin/env python
# -*- encoding: utf8 -*-
def check_code():
import random
checkcode = ''
for i in range(4):
current = random.randrange(0, 4)
if current != i:
temp = chr(random.randint(65, 90))
else:
temp = random.randint(0, 9)
checkcode += str(temp)
return checkcode
while True:
code = check_code()
print(code)
app = input("请输⼊验证码:")
if code.upper() == app.upper():
print("输⼊正确")
break
else:
print("输⼊错误")
s = input("是否重新输⼊?")
if s == "no":
break
else:
continue
15.开发敏感词语过滤程序,提⽰⽤户输⼊内容,如果⽤户输⼊的内容中包含特殊的字符:如“苍⽼师”“东京热”,则将内容替换为***
v = input(">>>")
v = v.replace("苍⽼师","***")
v = v.replace("东京热","***")
print(v)
16.制作表格

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。