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