day11-数据类型只之字符串

isprintable

功能:是否存在不可显示的字符

s1 = "liyan\tg"
v = s1.isprintable()
print(v)
输出结果:False

isspace

功能:判断是否全部是空格

1 s1 = "   "
2 v = s1.isspace()
3 print(v)
4 输出结果:True

title && istitle

功能:把字符变成标题 && 判断是否是标题

1 s1 = "My name is liyang"
2 v1 = s1.title()
3 v2 = v1.istitle()
4 print(v1)
5 print(v2)
6 输出结果:My Name Is Liyang
7 输出结果:True

expandtabs

功能:将制表符'\t'转换成指定宽度的tab键分割,默认tabsize=8

1 test = "username\temail\tpassworld\nliyang\tliyang@jyall.com\t123456\nliyang\tliyang@jyall.com\t123456\nliyang\tliyang@jyall.com\t123456"
2 v = test.expandtabs(20)
3 print(v)

join  重点记住

功能:将字符串中的每一个元素按照指定分隔符进行拼接

1 s1 = "你是风儿我是沙"
2 v = " ".join(s1)
3 print(v)
4 输出结果:你 是 风 儿 我 是 沙

def ljust(self, width, fillchar=None)

功能:返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串

1 s1 = "liyang"
2 v = s1.ljust(10,"*")
3 print(v)
4 输出结果:liyang****

islower && lower

功能:判断字符串是否是小写 && 将大写字符变成小写

1 s1 = "LI YANG"
2 v1 = s1.islower()
3 v2 = s1.lower()
4 print(v1)
5 print(v2)
6 输出结果:False
7 输出结果:li yang

isupper && upper

功能:判断字符串是否是大写 && 将大写字符变成大写

1 s1 = "li yang"
2 v1 = s1.isupper()
3 v2 = s1.upper()
4 print(v1)
5 print(v2)
6 输出结果:False
7 输出结果:Li YANG

lstrip && rstrip && strip

功能:去除字符串左边开头的空格 && 去除字符串右边结尾的空格 && 去除字符串两边的空格

 1 s1 = "   liyang   "
 2 v1 = s1.lstrip()
 3 v2 = s1.rstrip()
 4 v3 = s1.strip()
 5 print(v1)
 6 print(v2)
 7 print(v3)
 8 输出结果:liyang
 9 输出结果:   liyang
10 输出结果:liyang

maketrans

方法:用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。

1 s1 = "liyang"
2 v = s1.maketrans("xxx","rrr")
3 print(v)

partition

功能:指定分隔符将字符串进行分割,如果字符串中包含指定的分隔符,则返回一个3元的元组第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。

1 s1 = "liyangliyang"
2 v = s1.partition("ya")
3 print(v)
4 输出结果:('li', 'ya', 'ngliyang')

replace

功能:把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。

1 s1 = "liyangliyangliyang"
2 v = s1.replace("yang","sun",2)
3 print(v)
4 返回结果:lisunlisunliyang

split

功能:字字符串分割,默认是空格

1 s1 = "liyangliyang"
2 v = s1.split('y',1)
3 print(v)
4 输出结果:['li', 'angliyang']

splitlines

功能:分割,只能根据,true,false:是否保留换行

1 s1 = "liyang\nliyang\nli yang"
2 v = s1.splitlines(False)
3 print(v)
4 输出结果:['liyang', 'liyang', 'li yang']

startswith

功能:判断是否以什么开头,如果是返回True

1 s1 = "liyang"
2 v = s1.startswith('l')
3 print(v)
4 输出结果:True

endswith

功能:判断是否以什么结尾,如果是返回True

1 s1 = "liyang"
2 v = s1.endswith('g')
3 print(v)
4 输出结果:True

swapcase

功能:大小写转换

1 s1 = "liYang"
2 v = s1.swapcase()
3 print(v)
4 输出结果:LIyANG

 以上是基础方法,重点记住:join,split,find,strip,upper,lower,replace 这7个用法。

2,4个灰色魔法

索引,下标,获取字符串中的某一个字符

1 s1 = "liyang"
2 v1 = s1[3]
3 print(v1)
4 输出结果:a

切片

1 s1 = "liyang"
2 v3 = s1[0:-1]
3 print(v3)
4 输出结果:liyan

len

功能:记得当前字符串中有多少个字符组成

1 s1 = "liyang"
2 v = len(s1)
3 print(v)
4 输出结果:6

for

方法:for 变量名 in 字符串:

 1 s1 = "在我心中有一个梦"
 2 for item in s1:
 3     print(item)
 4 输出结果:
 5  6  7  8  9 10 11 12

3,一个深灰魔法

字符串一旦创建,不可以修改
一旦修改或者拼接,都会造成重新生成字符串
name = "liyang"
age = "28"

range

方法:帮助创建连续的数字,通过设置步长来指定步连续

 1 v = range(0,100,5)
 2 for item in v:
 3         print(item)
 4 
 5 s1 = input(">>>")
 6 for item in s1:
 7     v = s1.index(item)
 8     n = s1[v]
 9     print(v,n)
10 
11 s1 = input(">>>")
12 for item in range(0,len(s1)):
13     print(item,s1[item])

 4,课后作业

1、执行python脚本的两种方法

1 python file_name.py
2 chmod +x file_name.py
3 ./ file_name.py

2、简述位,字节的关系

1 bit:位 Byte:字节
2 1Byte=8bit
3 1024Byte=1KB
4 1024KB=1MB
5 1024MB=1GB
6 1024GB=1TB

3、简述ascii、unicode、utf-8、gbk的关系

1 accii --> unicode --> gbk --> utf-8
2 accii:是最早美国用的标准信息交换码,把所有的字母的大小写,各种符号用 二进制来表示,共有256中,加入些拉丁文等字符,1bytes代表一个字符
3 unicode:是为了统一世界各国语言的不用,统一用2个bytes代表一个字符,可以表达2**16=65556个,称为万国语言,特点:速度快,但浪费空间,
4 gbk:是中文的字符编码,用2个字节代表一个字符,
5 utf-8:为了改变Unicode的这种缺点,规定1个英文字符用1个字节表示,1个中文字符用3个字节表示,特点;节省空间,速度慢,用在硬盘数据传输,网络数据传输,相比硬盘和网络速度,体现不出来的,

4、请写出“李阳” 分别用utf-8 和 gbk编码所占的位数

1 utf-8: 6Bytes*8bit=48bit
2 gbk: 4Bytes*8bit=32bit

5、python单行注释和多行注释分别用什么

1 单行注释:#
2 多行注释:"""  """

6、声明变量要注意事项有哪些?

1 规则:只能是字符、数字、下划线组成。
2 ps:不能以数字开头;内部变量名不能使用;约定,常量全部为大写

7、如果一个变量n1=5,请使用int提供的方法,得到该变量最少可以用多少个二进制位表示?

1 n1 = 5
2 v =n1.bit_length()
3 print(v)

8、布尔值分别有什么?

1 True && False

9、阅读代码,请写出执行结果

1 a = "alex"
2 b = a.capitalize()
3 print(a)
4 print(b)
5 输出结果:alex
6 输出结果:Alex

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

name = " aleX"

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

1 v = name.strip()
2 print(v)

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

1 v = name.startswith('al')
2 print(v)

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

1 v = name.endswith('X')
2 print(v)

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

1 v = name.replace('l','p')
2 print(v)

e. 将name变量对应的值根据"l"分割,并输出结果

1 v = name.split('l')
2 print(v)

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

1 列表:[]

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

1 v = name.upper()
2 print(v)

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

1 v = lower()
2 print(v)

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

1 v  = name[1]
2 print(v)

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

1 v = name[:3]
2 print(v)

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

1 v = name[-2:]

l. 请输出name变量对应值中"e" 所在索引位

1 v = name.find('e')
2 print(v)
3 
4 v1 = name.index('e')
5 print(v1)

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

1 v = name.rstrip([-1:])

11、字符串是否可迭代对象? 如果可以,请使用for循环每一个元素?

1 可以。
2 
3 name = "liyang"
4 
5 for item in (len(name))
6     print(item)

12、请用代码实现

a. 利用下划线将列表的每一个元素拼接成字符串,

1 li = ['liyang','lili','sun']
2 v = "_".join(li)
3 print(v)

13、python2 中的range和python3中的range的区别

1 python2中range:直接创建到内存中
2 python3中range:循环使用的时候创建,节省内存。

14、实现一个整数加法计算器

如:content = input('请输入内容:')  如:5+9 或 3+2 或 6+9

1 sum = 0
2 content = input('请输入内容:')
3 c = content.split('+')
4 for i in c:
5     sum += int(i)
6 print(sum)

15、计算用户输入的内容中有几个十进制小数?几个字母?
如:content = input('请输入内容:')  如:liyang124234liyang

 1 content = input('请输入内容:')
 3 digital = 0 # 数字
 4 letter = 0  # 字母
 5 content = input('请输入内容:')
 6 for item in content:
 7     l = item.isalpha()
 8     if l == True:
 9         letter += 1
10     else:
11         digital += 1
12 print('数字:',digital,'字母:',letter)

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

1 int和9 根str 和"XXOO"的关系是类和对象的关系

17、制作趣味模板程序 需求:等待用户输入名字、地点、爱好,根据用户的名字和爱好进行任意现实
如:敬爱可亲的 xxx,最喜欢在 xxx 地方干 xxx

1 a = input('姓名:')
2 b = input('地点:')
3 c = input('爱好:')
4 print('敬爱可亲的',a,'最喜欢在',b,'地方干',c)

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

 1 def check_code():
 2     import random
 3     checkcode = ''
 4     for i in range(4):
 5         current = random.randrange(0,4)
 6         if current != i:
 7             temp = chr(random.randint(65,90))
 8         else:
 9             temp = random.randint(0,9)
10         checkcode += str(temp)
11     return checkcode
12 
13 while True:
14     code = check_code()
15     print(code)
16     s = input('请输入验证码:')
17     if s == code:
18         print('验证通过')
19         break
20     else:
21         continue

19、开发敏感词语过滤程序,提示用户输入内容,如果用户输入的内容中包含特殊的字符:
如:'仓老师','京东热',替换***

1 n = input('>>>>')
2 str1 = str.maketrans('仓老师','***')
3 str2 = str.maketrans('京东热','**')
4 output = n.translate(str1).translate(str2)
5 print(output)

20、制作表格
循环提示用户输入:用户名、密码、邮箱(要求用户输入的长度不超过20 个字符,如果超过则只有前20 个字符有效)
如果用户输入q 或Q 表示不再继续输入,将用户输入的内容以表格形式大隐

 1 while True:
 2     username = input("请输入用户名:")
 3     if username == "q" or username == "Q" or username == "no":
 4         break
 5 
 6     password = input("请输入密码:")
 7     if password == "q" or password == "Q" or password == "no":
 8         break
 9 
10     email = input("请输入邮箱:")
11     if email == "q" or email == "Q" or email == "no":
12         break
13 
14     if len(username) > 20:
15         username = username[0:20]
16 
17     if len(password) > 20:
18         password = password[0:20]
19 
20     if len(email) > 20:
21         email = email[0:20]
22 
23     enter = "用户名\t密码\t邮箱\n"
24     n = '{0}\t{1}\t{2}\n'.format(username,password,email)
25     output = enter + n
26     enter = output.expandtabs(20)
27     print(enter)
28     break

 

posted on 2018-04-20 23:07  sun_man  阅读(215)  评论(0编辑  收藏  举报