day11 字符串作业

练习题:
1、执行 Python 脚本的两种方式
解:python
  python 1.py
  ./1.py
 
2、简述位、字节的关系
解:8位 = 1字节  


3、简述 ascii、unicode、utf-­‐8、gbk 的关系
 
4、请写出 “李杰” 分别用 utf-­‐8 和 gbk 编码所占的位数
解:utf8:6 gbk:4
len(a)在python2位2,python3为utf位数6
可以通过

v = "李杰"
for item in v:
print(item)

在python2中运行后发现出来6行乱码,说明python2中的确把一个中文汉字当成三位

在pycharm中打开setting找到Project Interpreter中将python2添加进来即可使用python2
 
5、Pyhton 单行注释(#)和多行注释(三个双引号)分别用什么?

 
6、声明变量注意事项有那些?  
解:数字字母下划线,不要用python内置的,不要用关键字,尽量有意义
 
7、如有一下变量 n1 = 5,请使用 int 的提供的方法,得到该变量最少可以用多少个二进制位表示?
解:bit_length,5用二进制表示:101所以至少需要三位
 

8、布尔值分别有什么?  True/False
解:对于空字符串为假,数字0为假。其他都是真
  数字转字符串:a = 123 b = str(a)
  字符串转数字:a = "123" b = int(a)
  bool转换:bool()
 
9、阅读代码,请写出执行结果  

a = "alex"    
b = a.capitalize()    
print(a)    
print(b)

请写出输出结果: alex
Alex


10、写代码,有如下变量,请按照要求实现每个功能   


name = " aleX"

 

a. 移除 name 变量对应的值两边的空格,并输入移除后的内容

a = name.strip()
print(a)

b. 判断 name 变量对应的值是否以 "al" 开头,并输出结果

b = name.startswith('al')
if b:
    print('yes')
else:
    print('no')

c. 判断 name 变量对应的值是否以 "X" 结尾,并输出结果

c = name.endswith('x')
if c:
    print('yes')
else:
    print('no')

d. 将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果

name = "alex"
d = name.maketrans('l','p')
print(name.translate(d))
print(name.replace('l','p'))

e1.将name的每个字符后面都加上|

t = '|'
e = t.join(name)
print(e)                 #结果为   <class 'str'>
e. 将 name 变量对应的值根据 “l” 分割,并输出结果。 
e1 = name.split('l')
print(e1)

f. 请问,上一题 e 分割之后得到值是什么类型(可选)?

print(type(e1))            #结果为   <class 'list'>

g. 将 name 变量对应的值变大写,并输出结果

g = name.upper()
print(g)

h. 将 name 变量对应的值变小写,并输出结果

h = name.lower()
print(h)

i. 请输出 name 变量对应的值的第 2 个字符?

print(name[1])

j. 请输出 name 变量对应的值的前 3 个字符?

print(name[0:3])     #虽然写的三,但不含右端点。从0开始可以省略0

k. 请输出 name 变量对应的值的后 2 个字符?

k = len(name)
print(name[k -2:])    #k后面一个空格接-2,-2后面加冒号表示从右边开始数两个

l. 请输出 name 变量对应的值中 “e” 所在索引位置?

print(name.index('e'))

m. 获取子序列,仅不包含最后一个字符。如: oldboy 则获取 oldbo; root 则获取 roo

print(name[:len(name) -1])  #冒号在左边表示从左往右取,不含倒数第一位(左闭右开)

11、字符串是否是可迭代对象?如可以请使用 for 循环每一个元素?
解:例如能执行 for i in 值 此值就是可迭代对象
#类,数据类型 str int 等 各种功能
#对象,根据str等类型创建一个对象s = “alex”

12、请用代码实现:  
a. 利用下划线将列表的每一个元素拼接成字符串,li = "alexericrain"
b. 利用下划线将列表的每一个元素拼接成字符串,li = ['alex', 'eric', 'rain'] (可选)
解:

 v = “_".join("alexericrain")    # a_l_e_x_e_r_i_c_r_a_i_n
v = "_".join(['alex','eric','rain'])    # alex_eric_rain

13、Python2 中的 range 和 Python3 中的 range 的区别? 

解:python2立即创建 python2中xrange与python3中的range效果一样
python3只有在循环调用时才一个个创建出来

从小到大,range(0,100,3) 从大到小,range(100,0,-4) 每次减少4
 

14、实现一个整数加法计算器:  
如:
content = input('请输入内容:') # 如: 5+9 或 5+ 9 或 5 + 9

解:用户输入的是字符串类型的 "5+9" 利用split会得到列表,结合变量content得到两个字符,转成int后进行加法计算(题目已知是加法计算)

content    = input('请输入内容:')
v1,v2 = content.split('+')
v1 = int(v1)
v2 = int(v2)
sum = v1 + v2
print(sum)

15、计算用户输入的内容中有几个十进制小数?几个字母?   

如:
content = input('请输入内容:') # 如:asduiaf878123jkjsfd-­‐213928
解:类似于一个投票系统:

content = input('请输入内容:')
c1 = 0
c2 = 0
for item in content:
if item.isalpha():
c1 += 1
elif item.isdecimal():
c2 += 1
print('字母个数',c1)
print('十进制小数个数',c2)

 

16、简述 int 和 9 等数字 以及 str 和 "xxoo" 等字符串的关系?
解:类和对象的关系


17、制作趣味模板程序  
需求:等待用户输入名字、地点、爱好,根据用户的名字和爱好进行任意现实

如:敬爱可亲的 xxx,最喜欢在 xxx 地方干 xxx
解:考察format的应用

template = "敬爱可亲的{0},最喜欢在{1},地方{2}"
name = input("请输入用户名")
place = input("请输入地点")
event = input("请输入事件")
v = template.format(name,place,event)
print(v)

18、制作随机验证码,不区分大小写。   

流程:
-­‐ 用户执行程序
-­‐ 给用户显示需要输入的验证码
-­‐ 用户输入的值
用户输入的值和显示的值相同时现实正确信息;否则继续生成随机验证码继续等待用户输入
生成随机验证码代码示例:def check_code():
解:为了不区分大小写,集体转换为大写或者小写即可。四位验证码

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 = ramdom.radint(0,9)
checkcode += str(temp)
return checkcode
while True:

code = check_code()
print(code)
v = input('请输入您的验证码')
v1 = v.upper()
code1 = code.upper()
if v1 == code1:
print('正确')
break
else:
print('错误,请重新输入新的验证码')

19、开发敏感词语过滤程序,提示用户输入内容,如果用户输入的内容中包含特殊的字符:  
如 "苍老师" "东京热",则将内容替换为 ***
解:字符串一旦被修改会生成一个新的字符串.记得一定要重新赋值给v,否则v的值不会变化

v = "jkdsnkfjns"
v = v.replace('s',"***")
v = v.replace('a',"***")
print(v)

20、制作表格
循环提示用户输入:用户名、密码、邮箱 (要求用户输入的长度不超过 20 个字符,如果超过则只有前 20 个字符有效)
如果用户输入 q 或 Q 表示不再继续输入,将用户输入的内容以表格形式大隐
解:expandtabs 切片[0:20] len() 建立中文表格title时expandtabs选小一点这样视觉上看起来对齐
注意 v1 == 'q'or v1 == 'Q':不能简写成 v1 == 'q'or 'Q':否则会出错

s = ""
while True:
v1 = input('用户名:')
if v1 == 'q'or v1 == 'Q':
print('退出')
break
else:
v2 = input('密码:')
v3 = input('邮箱:')
template = "{0}	{1}	{2}
"
v = template.format(v1,v2,v3)
s = s + v
title = '用户名	密码	邮箱'
print(title.expandtabs(17))
print(s.expandtabs(20))

 输出结果:

原文地址:https://www.cnblogs.com/Josie-chen/p/8669873.html