1.如何定义一个跨越多行的字符串
>>> #字符串是一首诗,含有多行
>>> str1='''我如果爱你
绝不学攀援的凌霄花
借你的高枝炫耀自己'''
>>> print(str1)
我如果爱你
绝不学攀援的凌霄花
借你的高枝炫耀自己
>>> str3='我如果爱你\n绝不学攀援的凌霄花\n借你的高枝炫耀自己'
>>> print(str3)
我如果爱你
绝不学攀援的凌霄花
借你的高枝炫耀自己
>>> #字符串太长,一行写不开时
>>> str2='我如果爱你\
绝不学攀援的凌霄花\
借你的高枝炫耀自己'
>>> print(str2)
我如果爱你,绝不学攀援的凌霄花,借你的高枝炫耀自己.
>>> str4=('I'
'love'
'you')
>>> print(str4)
Iloveyou
注:三重单引号和三重双引号在不赋值的情况下,用作多行注释。
2.file=open('F:\temp\readme.txt','r')表示以只读的方式打开'F:\temp\readme.txt'这个文本文件,但是事实上这个语句会报错,为什么?怎么修改?
会报错是因为在字符串中,我们约定‘\t’表示横向制表符,‘\r’表示回车符,因此并不会按照我们计划的路径打开文件。
修改的方法就是将文件路径中的‘\’转义。
>>> file=open('F:\temp\readme.txt','r')
Traceback (most recent call last):
File "<pyshell#37>", line 1, in <module>
file=open('F:\temp\readme.txt','r')
OSError: [Errno 22] Invalid argument: 'F:\temp\readme.txt'
>>> file1=open(r'F:\temp\readme.txt','r') #转义方式①
>>> file2=open('F:\\temp\\readme.txt','r') #转义方式②
>>> file1
<_io.TextIOWrapper name='F:\\temp\\readme.txt' mode='r' encoding='cp936'>
3.如何从字符串str1 = 'I love you'中提取子串‘love’
>>> str1='I love you'
>>> str1[2:6]
'love'
4.如果使用负数作为索引值进行分片操作,字符串str1 = 'I love you',你能目测出str1[-8:-4]的结果吗
>>> str1="I love you"
>>> str1[-8:-4]
'love'
5.字符串str1 = 'I love you',请问str1[2:-4]会显示什么样的内容
>>> str1[2:-4]
'love'
注:字符串的索引可正可负,例如‘python’这个字符串,正数的索引唯一,但是负数的索引不唯一:
字符串:p y t h o n
索引值:0 1 2 3 4 5
-6 -5 -4 -3 -2 -1
-12 -11 -10 -9 -8 -7
...
6.将字符串str2='i543 iill1i3oii3vnske00 ienykdfoioou'还原为有意义的字符串,str2[::4]的运行结果是什么你能看出来吗?
>>> str2='i543 iill1i3oii3vnske00 ienykdfoioou'
>>> str2[::4]
'i love you'
注:str2[::4]表示从字符串的第一位开始,步长为4,及从第一位开始,以索引值每次+4的方式输出当前索引值指向的字符。如果步长为负数,表示从最后一位开始:
>>> str4='12345678'
>>> str4[::-1]
'87654321'
>>> str4[::-2]
'8642'
7.字符串与元组一样,一旦定义,不能修改。(要实现字符串的修改,可以使用分片对字符串重新拼接)
>>> str1='catch me if you can'
>>> str1=str1[:3]+' '+str1[3:]#修改字符串
>>> str1
'cat ch me if you can'
拓展练习:编写密码安全性检查脚本:
要求:
1.低级密码要求:密码由单纯的数字和字母组成;长度不超过8位;
2.中级密码要求: 密码必须由数字、字母或特殊字符(仅限:+-*/)任意两种组合;长度大于8位
3.高级密码要求:密码必须由数字、字母及特殊字符(仅限:+-*/)三种组合;密码只能由字母开头;长度不少于16位
symbols=r'''+-*/''' #特殊字符
letter='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' #字母
num='1234567890' #数字
while 1:
password=input("请输入密码:")
while password.isspace() or len(password)==0:
password=input("密码不能只含空格或者为空,请重新输入密码:")
#判断密码长度
length=len(password)
if length<=8:
flag_len=1
elif length<16:
flag_len=2
else:
flag_len=3
flag_password=0 #用来判断密码中的字符种类
#判断密码是否含有字母
for ch in password:
if ch in letter:
flag_password+=1
break;
#判断密码是否含有数字
for ch in password:
if ch in num:
flag_password+=1
break
#判断密码是否含有特殊字符
for ch in password:
if ch in symbols:
flag_password+=1
break
#打印结果
if flag_len==1 or flag_password==1:
print("密码安全级别:低")
elif flag_len==2 or flag_password==2:
print("密码安全级别:中")
else:
print("密码安全级别:高")