Day11 练习题
Day11
1、执行 Python 脚本的两种方式
方法一: python3 1.py
方法二: 1.文件首行添加#!/usr/bin/env python3
2.赋予执行权限 chmod u+x 1.py
3.执行./1.py
直接python解释器执行
2、简述位、字节的关系
8位=1字节,“位”是数据存储的最小单位。字节也叫Byte,1Byte=8bit(位)
3、简述 ascii、unicode、utf-8、gbk 的关系
ascii只不能存储中文。1个字符战1字节,ascii只支持127个字符,但这只适用于26个英文以及常用符号,别的非英语国家怎么办,于是有了unicode,unicode是万国码,又称utf16,用两个字节表示一个字符,
2byte = 16bit,所以是2^16 = 65556个,好处是兼容性强,可以兼容 ascii utf8 gbk等字符集,但空间浪费大,原因是不论是哪种字符,都用2个字节表示。utf8是一种基于unicode的动态编码方式,用
1~4个字节表示字符,英文用一个字节表示,汉字用三个字节表示,utf-8编码进行存储时有极大地优势,但是当读取到计算机内存时却不大合适,因为utf-8编码是变长的,不方便寻址和索引,所以在计算机内存中,
还是转化为Unicode编码合适些。这就可以解释为什么每次读取文本时,要将编码转化为Unicode编码,而将内存中的字符写入文件存储时,要将编码转化为utf-8了,但因为是动态的(编码+存储格式),所以编码
或转换过程就会慢一些,但这些资源可忽略不计。gbk是针对汉字的编码方式,由中国国家标准总局发布,其包含关系如下: gb18030>gbk>gb2312>ascii是在ascii之上的字符集,用两个字节来表示一个字符,之
所以有这么多版本,那是因为国家发展了,用的字也多了。
4、请写出 “李杰” 分别用 utf-8 和 gbk 编码所占的位数
UTF-8 48位 6个字节 GBK 32位 4个字节
5、Pyhton 单行注释和多行注释分别用什么?
单行:#注释内容 多行: """ 注释内容1 注释内容2 """ 或者 ''' 注释内容1 注释内容2 '''
6、声明变量注意事项有那些?
1.由字母、数字、下划线组成 2.不能以数字开头 3.不能是关键字 4.不能是内置的东西
7、如有一下变量 n1 = 5,请使用 int 的提供的方法,得到该变量最少可以用多少个二进制位表示?
n1 = 5
print(n1.bit_length())
8、布尔值分别有什么?
True 也表示1,其他字符都是真 False 也代表0。空字符串也是假
9、阅读代码,请写出执行结果
a = "alex"
b = a.capitalize()
print(a)
print(b)
请写出输出结果:
alex Alex
10、写代码,有如下变量,请按照要求实现每个功能
name = " aleX"
a. 移除 name 变量对应的值两边的空格,并输出移除后的内容
name = " aleX" print(name.strip())
b. 判断 name 变量对应的值是否以 "al" 开头,并输出结果
print(name.startswith('al'))
c. 判断 name 变量对应的值是否以 "X" 结尾,并输出结果
print(name.endswith('X'))
d. 将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果
print(name.replace('l','p'))
e. 将 name 变量对应的值根据 “l” 分割,并输出结果。
print(name.split('l'))
f. 请问,上一题 e 分割之后得到值是什么类型(可选)?
list 列表
g. 将 name 变量对应的值变大写,并输出结果
print(name.upper())
h. 将 name 变量对应的值变小写,并输出结果
print(name.lower())
i. 请输出 name 变量对应的值的第 2 个字符?
print(name[1])
j. 请输出 name 变量对应的值的前 3 个字符?
print(name[0:3])
k. 请输出 name 变量对应的值的后 2 个字符?
print(name[-2:])
l. 请输出 name 变量对应的值中 “e” 所在索引位置?
#方法一 print(name.find('e')) #方法二 for i in range(len(name)): if name[i] == 'e': print(i,name[i])
m. 获取子序列,仅不包含最后一个字符。如: oldboy 则获取 oldbo; root 则获取 roo
print(name[0:len(name) -1])
21、字符串是否可迭代对象?如可以请使用 for 循环每一个元素?
#可以迭代
name = "oldboy" for i in range(len(name)): print(i,name[i])
22、请用代码实现:
a. 利用下划线将列表的每一个元素拼接成字符串,li = "alexericrain"
li = "alexericrain" print('_'.join(li))
b. 利用下划线将列表的每一个元素拼接成字符串,li = ['alex', 'eric', 'rain'] (可选)
li = ['alex','eric','rain'] print('_'.join(li))
23、Python2 中的 range 和 Python3 中的 range 的区别?
在python2中,range方法得到的结果就是一个确定的列表对象,列表对象所拥有的方法,range方法生成的结果对象都可以直接使用,而在python3中,range方法得到的对象是一个迭代器而不是一个确定的列表,如果
想要转化为列表对象则需要再使用list方法进行转化。python2 中需要占用更多的内存
24、实现一个整数加法计算器:输入的是字符串5 + 9 而不是两个数字
如:content = input('请输入内容:') # 如: 5+9 或 5+ 9 或 5 + 9
while True: num1 = int(input('请输入第1个数字:')) num2 = int(input('请输入第2个数字:')) print(num1,"+",num2,"=",num1+num2) var = input("是否继续(y/n):") if var == 'n': break
value = "5 + 9" v1, v2 = value.split("+") print(value, "=", int(v1) + int(v2))
25、计算用户输入的内容中有几个十进制数?几个字母?(改用for循环)
如: content = input('请输入内容:') # 如:asduiaf878123jkjsfd-213928
content = input('请输入内容:') count_str = 0 count_num =0 for i in content:if i.isdecimal(): count_num += 1 elif i.isalpha(): count_str += 1 print("输入的内容含有几个字母:",count_str) print("输入的内容含有几个数字:",count_num)
26、简述 int 和 9 等数字 以及 str 和 "xxoo" 等字符串的关系?
类和对象的关系
27、制作趣味模板程序
需求:等待用户输入名字、地点、爱好,根据用户的名字和爱好进行任意现实
如:敬爱可亲的 xxx,最喜欢在 xxx 地方干 xxx
name = input('请输入姓名:') city = input('请输入你喜欢的地点:') hobby = input('请输入喜好:') message = "敬爱可亲的" + name + ",最喜欢在" + city + "地方干" + hobby print(message)
###或者如下####
template = "敬爱可亲的{0},最喜欢在{1}地方干{2}"
mess2 = template.format(name,city,hobby)

28、制作随机验证码,不区分大小写。
流程:
- 用户执行程序
- 给用户显示需要输入的验证码
- 用户输入的值
用户输入的值和显示的值相同时现实正确信息;否则继续生成随机验证码继续等待用户输入
生成随机验证码代码示例:

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) inp_code = input("请输入验证码:") if inp_code.lower() == code.lower(): print("验证通过,欢迎!!!!!") break else: print("验证码错误")
29、开发敏感词语过滤程序,提示用户输入内容,如果用户输入的内容中包含特殊的字符:
如 "苍老师" "东京热",则将内容替换为 ***
msg = input('请输入内容:') print(msg.replace('苍老师','***').replace('东京热','***'))
30、制作表格
循环提示用户输入:用户名、密码、邮箱 (要求用户输入的长度不超过 20 个字符,如果超过则只有前 20 个字符有效)
如果用户输入 q 或 Q 表示不再继续输入,将用户输入的内容以表格形式大隐
tables = ""
while True:
user = input("请输入用户名:")
pwd = input("请输入密码:")
email = input("请输入邮箱:")
if len(user) > 20:
user = user[0:20]
if len(pwd) > 20:
pwd = pwd[0:20]
if len(email) > 20:
email = email[0:20]
template = "{0}\t{1}\t{2}\n"
rows = template.format(user, pwd, email)
tables += rows
var = input("是否退出,输入q/Q 退出:")
if var.lower() == 'q':
break
header = "user\tpassword\temail"
print(header.expandtabs(21))
print(tables.expandtabs(21))
浙公网安备 33010602011771号