python开发基础02-字符串操作方法练习题
1、执行 Python 脚本的两种方式
python解释器 py文件 #!/usr/bin/env python
进入python解释器,便捷命令并执行
pycharm或其他pythonIDE
shebang编写正确,py文件添加可执行权限,linux下执行./文件名.py
2、简述位、字节的关系
1字节=8位
3、简述 ascii、unicode、utf-8、gbk 的关系
ascii 是最早美国用的标准信息交换码,把所有的字母的大小写,各种符号用 二进制来表示,共有256中,加入些拉丁文等字符,1bytes代表一个字符
Unicode是为了统一世界各国语言的不用,统一用2个bytes代表一个字符,可以表达2**16=65556个,称为万国语言,特点:速度快,但浪费空间。
4、请写出 “李杰” 分别用 utf-8 和 gbk 编码所占的位数
utf-8 6字节,48位
gbk 4字节,32位
5、Pyhton 单行注释和多行注释分别用什么?
#
''' 或"""
注释内容
''' 或"""
pycharm注释快捷键:crtl+/
6、声明变量注意事项有那些?
(1.) 变量名只能是 字母、数字或下划线的任意组合
7、如有一下变量 n1 = 5,请使用 int 的提供的方法,得到该变量最少可以用多少个二进制位表示?
print(int(n1).bit_length()); #3个
101
8、布尔值分别有什么?
真:True 1 假:False 0
9、阅读代码,请写出执行结果
a = "alex"
b = a.capitalize()
print(a)
print(b)
请写出输出结果:
alex
Alex
10、写代码,有如下变量,请按照要求实现每个功能
name = " aleX"
a. 移除 name 变量对应的值两边的空格,并输入移除后的内容
b. 判断 name 变量对应的值是否以 "al" 开头,并输出结果
c. 判断 name 变量对应的值是否以 "X" 结尾,并输出结果
d. 将 name 变量对应的值中的 “l” 替换为 “p” ,并输出结果
e. 将 name 变量对应的值根据 “l” 分割,并输出结果。
f. 请问,上一题 e 分割之后得到值是什么类型(可选)?
g. 将 name 变量对应的值变大写,并输出结果
h. 将 name 变量对应的值变小写,并输出结果
i. 请输出 name 变量对应的值的第 2 个字符?
j. 请输出 name 变量对应的值的前 3 个字符?
k. 请输出 name 变量对应的值的后 2 个字符?
l. 请输出 name 变量对应的值中 “e” 所在索引位置?
m. 获取子序列,仅不包含最后一个字符。如: oldboy 则获取 oldbo; root 则获取 roo
name = " aleX" print(name.strip()) print(name.startswith("al")) print(name.endswith("X")) print(name.replace("l","p")) print(name.split("l")) print(type(name.split("l"))) print(name.upper()) print(name.lower()) print(name[1]) print(name[:3]) print(name[-2:]) print(name.index("e")) print(name[:-1])
21、字符串是否可迭代对象?如可以请使用 for 循环每一个元素?
text = "diedaishuchu" for t in text: print(t)
22、请用代码实现:
a. 利用下划线将列表的每一个元素拼接成字符串,li = "alexericrain"
b. 利用下划线将列表的每一个元素拼接成字符串,li = ['alex', 'eric', 'rain'] (可选)
li = "alexericrain" li2 = ['alex', 'eric', 'rain'] print("_".join(li)) print("_".join(li2))
23、Python2 中的 range 和 Python3 中的 range 的区别?
python2预先将range所有内容写入内存,内存使用多
python3不会将所有内容全部写入内存,动态回收内存
24、实现一个整数加法计算器:
如:
content = input('请输入内容:') # 如: 5+9 或 5+ 9 或 5 + 9
content = input('请输入内容:') li=content.split("+") num = 0 sum_num = 0 for i in range(len(li)): num = int(li[i].strip()) sum_num += num print(sum_num)
25、计算用户输入的内容中有几个十进制小数?几个字母?
如:
content = input('请输入内容:') # 如:asduiaf878123jkjsfd-‐213928
content = input("请输入内容:") int_num = 0 str_num = 0 for n in content: if n in "0123456789": int_num += 1 if n in "abcdefghijklmnopqrstuvwsyz": str_num += 1 print("数字个数为:",int_num,"字母个数为:",str_num)
26、简述 int 和 9 等数字 以及 str 和 "xxoo" 等字符串的关系?
int整数型可做运算
str为字符串不能运算
整数转换成字符串
num = 9
str = str(num)
str="9"
num=int(str)
27、制作趣味模板程序
需求:等待用户输入名字、地点、爱好,根据用户的名字和爱好进行任意现实
如:敬爱可亲的 xxx,最喜欢在 xxx 地方干 xxx
name = input("姓名:") place = input("地点:") like = input("爱好:") print("敬爱可亲的"+name+",最喜欢在"+place+"做"+like) print('敬爱可亲的%s,最喜欢在%s做%s'%(name,place,like))
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() user_code = input("请输入验证码%s:"%(code)) if user_code.lower() == code.lower(): print("输入正确!") break else: continue
或使用casefold()
# user_code = input("请输入验证码:").casefold()
# code = code.casefold()
29、开发敏感词语过滤程序,提示用户输入内容,如果用户输入的内容中包含特殊的字符:
如 "苍老师" "东京热",则将内容替换为 ***
text = input("请输入内容:") mingan = [] mingan = ['苍老师','东京热'] for i in mingan: # print(i) while text.find(i) != -1: #text = "***" #或替换对应内容 text = text.replace(i,"***") break else: continue else: print(text)
30、制作表格
循环提示用户输入:用户名、密码、邮箱 (要求用户输入的长度不超过 20 个字符,如果超过则只有前 20 个字符有效)
如果用户输入 q 或 Q 表示不再继续输入,将用户输入的内容以表格形式打印
v = [] while True: username = input("请输入用户名:") password = input("请输入密码:") email= input("请输入邮箱:") user_name = username[:20] pass_word = password[:20] email20 = email[:20] n = {"name": user_name, "pwd": pass_word, "mail": email20} v.append(n) back = input("按q/Q退出打印,任意键继续输入") if back.lower() == "q": user_str = "用户名\t密码\t邮箱" print(user_str.expandtabs(20)) for lines in v: user_str = "{0}\t{1}\t{2}".format(lines["name"], lines["pwd"], lines["mail"]) print(user_str.expandtabs(20)) break