FIsh论坛《零基础入门学习Python》 第014讲:字符串:各种奇葩的内置方法
测试题:
- 还记得如何定义一个跨越多行的字符串吗(请至少写出两种实现的方法)?
#方法一:使用三个单引号
str = '''wqeyiwyyeri,wrqre
qereqerqr
rqrqereq
qerqrqre
'''
print(str)
#方法二:在小括号中使用单引号或者双引号,后面用换行符“\n”
str1 = (
'riuqiurieu\n'
'fhdjhfjdshk,\n'
"hfjkhsdjhfjskh\n"
)
print(str1)
输出结果:
wqeyiwyyeri,wrqre
qereqerqr
rqrqereq
qerqrqre
riuqiurieu
fhdjhfjdshk,
hfjkhsdjhfjskh
- 三引号字符串通常我们用于做什么使用?
三引号字符串在不赋值的情况下,通常当作跨行注释使用,例如:
'''这个在打印的时候看不到,主要可以用在代码编写过程的注释的作用。
这样说,应该差不多。
嗯哼~
'''
print(1)
输出结果:
1
- file1 = open(‘C:\windows\temp\readme.txt’, ‘r’) 表示以只读方式打开“C:\windows\temp\readme.txt”这个文本文件,但事实上这个语句会报错,知道为什么吗?你会如何修改?
会报错是因为在字符串中,约定“\t”和“\r”分别表示“横向制表符(TAB)”和“回车符”(详见:https://www.cnblogs.com/hcxy2007107708/articles/10010196.html),因此并不会按照我们计划的路径去打开文件。
我们只需要使用原始字符串操作符(R或r)即可:
#‘r’表示按照原始字符串进行查找即可。
file1 = open(r'C:\windows\temp\readme.txt', 'r')
输出结果:(这里并没有这个文件,所以报错了)
Traceback (most recent call last):
File "D:/PycharmProjects/pythonProject/venv/001.py", line 12, in <module>
file1 = open(r'C:\windows\temp\readme.txt', 'r')
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\windows\\temp\\readme.txt'
3.有字符串:str1 = ‘鱼C资源打包’,请问如何提取出子字符串:‘www.fishc.com’
使用分片的方法:
str1 = '<a href="http://www.fishc.com/dvd" target="_blank">'
#str1[16]=w,str1[28]=m
str2 = str1[16:29]##包含起始16,不包含结束29
print(str2)
输出结果:
www.fishc.com
- 如果使用负数作为索引值进行分片操作,按照第三题的要求你能够正确目测出结果吗?
ok! try it .
str1 = '<a href="http://www.fishc.com/dvd" target="_blank">'
str2 = str1[16:29]
lenght = len(str1)
print(lenght)
str3 = str1[16-51:29-51]
print(str2)
print(str3)
输出结果:
51
www.fishc.com
www.fishc.com
- 还是第三题那个字符串,请问下边语句会显示什么内容?
str1[20:-36]
会显示:空
str1 = '<a href="http://www.fishc.com/dvd" target="_blank">'
str2 = str1[16:29]
lenght = len(str1)
print(lenght)
str3 = str1[16-51:29-51]
str4=str1[20:-36]#str1[20]=f,str[-36]=str1[15]=/
print(str2)
print(str3)
print(str4)
输出结果:
51
www.fishc.com
www.fishc.com
- 据说只有智商高于150的鱼油才能解开这个字符串(还原为有意义的字符串):
str1 = 'i2sl54ovvvb4e3bferi32s56h;$c43.sfc67o0cm99'
str1 = 'i2sl54ovvvb4e3bferi32s56h;$c43.sfc67o0cm99'
str2=str1[::3]
print(str1)
print(str2)
输出结果:
i2sl54ovvvb4e3bferi32s56h;$c43.sfc67o0cm99
ilovefishc.com
动动手:
0.请写一个密码安全性检查的脚本代码:check.py
#低级密码要求:
# 1. 密码由单纯的数字或字母组成
# 2. 密码长度小于等于8位
# 中级密码要求:
# 1. 密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合
# 2. 密码长度不能低于8位
# 高级密码要求:
# 1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
# 2. 密码只能由字母开头
# 3. 密码长度不能低于16位
程序演示:
参考代码:有错误需要完善
#密码安全性检查 check.py
password = input("请输入需要检查的密码组合:")
lenght = len(password)
symbols = r'''~!@#$%^&*_=-/,.?<>;:[]{}|\()'''
alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
numbers = "0123456789"
temp1 = '''高级密码要求:
1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
2. 密码只能由字母开头
3. 密码长度不能低于16位
'''
temp2 = '''\t您的密码安全级别评定为:'''
temp3 ="请继续保持"
require = '''\t低级密码要求:由单纯的数字或字母组成,长度小于等于8位;
中级密码要求:由数字、字母或特殊字符任意两种组合,密码长度不能低于8位
高级密码要求:由数字、字母及特殊字符三种组合,密码只能由字母开头,密码长度不能低于16位
'''
i=0
#检查password中组成元素:
while 1:
print(i)#自己加的
for each in password:
if each in symbols:
i +=1
break
for each in password:
if each in alphabet:
i +=1
break
for each in password:
if each in numbers:
i +=1
break
def low_password( ):
result = temp2 +"低"
print(result)
print(temp1)
def mid_password( ):
result = temp2 +"中"
print(result)
print(temp1)
def high_password( ):
result = temp2 +"高"
print(result)
print(temp3)
while (password.isspace() or lenght == 0):
print(i,"我在A")#自己加的
password =input( "\t密码输入错误,原因:空格或未输入。\n\t重新输入要检查的密码组合:")
lenght = len(password)
break
while (i !=1 and lenght <= 8 ) :
print(i, "我在B") # 自己加的
password =input( "\t密码输入不符合要求。"+"\n\t密码要求:\n"+require+"\n\t重新输入要检查的密码组合:")
lenght = len(password)
break
while (i ==1 and lenght >8):
password =input( "\t密码输入不符合要求。"+"\n密码要求:\n"+require+"\n\t重新输入要检查的密码组合:")
lenght = len(password)
break
if lenght <=8 and i ==1:
low_password()
break
elif i==3 and lenght > 16 and password[0] in alphabet:###i==3???????代码错误?
high_password()
break
else:
print(i,"我在C") # 自己加的
mid_password() ####代码有错误,输入三次空密码,第三次判定为“中”,判定错误。
break
#输出结果:
0
0 我在A
密码输入错误,原因:空格或未输入。
重新输入要检查的密码组合:
0 我在B
密码输入不符合要求。
密码要求:
低级密码要求:由单纯的数字或字母组成,长度小于等于8位;
中级密码要求:由数字、字母或特殊字符任意两种组合,密码长度不能低于8位
高级密码要求:由数字、字母及特殊字符三种组合,密码只能由字母开头,密码长度不能低于16位
重新输入要检查的密码组合:
0 我在C
您的密码安全级别评定为:中
高级密码要求:
1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
2. 密码只能由字母开头
3. 密码长度不能低于16位
Process finished with exit code 0
修改后的代码:(输出仍然不符合预期,待完善修改判定条件)
将部分break语句替换为continue语句
# 密码安全性检查 check.py
password = input("请输入需要检查的密码组合:")
lenght = len(password)
symbols = r'''~!@#$%^&*_=-/,.?<>;:[]{}|\()'''
alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
numbers = "0123456789"
temp1 = '''高级密码要求:
1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
2. 密码只能由字母开头
3. 密码长度不能低于16位
'''
temp2 = '''\t您的密码安全级别评定为:'''
temp3 = "请继续保持"
require = '''\t低级密码要求:由单纯的数字或字母组成,长度小于等于8位;
中级密码要求:由数字、字母或特殊字符任意两种组合,密码长度不能低于8位
高级密码要求:由数字、字母及特殊字符三种组合,密码只能由字母开头,密码长度不能低于16位
'''
i = 0
# 检查password中组成元素:
while 1:
print(i) # 自己加的
for each in password:
if each in symbols:
i += 1
break
for each in password:
if each in alphabet:
i += 1
break
for each in password:
if each in numbers:
i += 1
break
def low_password():
result = temp2 + "低"
print(result)
print(temp1)
def mid_password():
result = temp2 + "中"
print(result)
print(temp1)
def high_password():
result = temp2 + "高"
print(result)
print(temp3)
while (password.isspace() or lenght == 0):
print(i, "我在A") # 自己加的
password = input("\t密码输入错误,原因:空格或未输入。\n\t重新输入要检查的密码组合:")
lenght = len(password)
#break
continue
while (i != 1 and lenght <= 8):
print(i, "我在B1") # 自己加的
password = input("\t密码输入不符合要求。" + "\n\t密码要求:\n" + require + "\n\t重新输入要检查的密码组合:")
print(i, "我在B2") # 自己加的
lenght = len(password)
#break
continue
while (i == 1 and lenght > 8):
print(i, "我在D3") # 自己加的
password = input("\t密码输入不符合要求。" + "\n密码要求:\n" + require + "\n\t重新输入要检查的密码组合:")
lenght = len(password)
#break
continue
if lenght <= 8 and i == 1:
print(i, "我在D1") # 自己加的
low_password()
#break
continue
elif i == 3 and lenght > 16 and password[0] in alphabet: ###i==3???????代码错误?
print(i, "我在D2") # 自己加的
high_password()
#break
continue
else:
print(i, "我在C") # 自己加的
mid_password() ####代码有错误,输入三次空密码,第三次判定为“中”,判定错误。
#break
continue
#输出结果:
请输入需要检查的密码组合:I_1love_fish.com
0
16 我在C
您的密码安全级别评定为:中
高级密码要求:
1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
2. 密码只能由字母开头
3. 密码长度不能低于16位
#输出结果:
请输入需要检查的密码组合:123456789
0
9 我在C
您的密码安全级别评定为:中
高级密码要求:
1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
2. 密码只能由字母开头
3. 密码长度不能低于16位
#输出结果:
请输入需要检查的密码组合:WS{}SB
0
6 我在B1
密码输入不符合要求。
密码要求:
低级密码要求:由单纯的数字或字母组成,长度小于等于8位;
中级密码要求:由数字、字母或特殊字符任意两种组合,密码长度不能低于8位
高级密码要求:由数字、字母及特殊字符三种组合,密码只能由字母开头,密码长度不能低于16位
#输出结果:
请输入需要检查的密码组合:WS{ABCBA}SB
0
11 我在C
您的密码安全级别评定为:中
高级密码要求:
1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
2. 密码只能由字母开头
3. 密码长度不能低于16位
if、elif
i = 0
if i > 0:
print
'这个数比0大'
elif i < 0:
print
'这个数比0小'
else:
print
'这个数是0'
python中\t、\n含义
\t :代表着四个空格也就是一个tab
\n:代表着换行
isspace()方法
isspace() 方法检测字符串是否只由空白字符组成。
str.isspace()
如果字符串中只包含空格,则返回 True,否则返回 False.
str = " "
print (str.isspace())
str = "Test example....wow!!!"
print (str.isspace())
输出结果:
True
False
def无参定义函数
语法:
def function_name():
expressions
Python 使用def 开始函数定义,紧接着是函数名,括号内部为函数的参数,内部为函数的 具体功能实现代码,如果想要函数有返回值, 在 expressions 中的逻辑代码中用return 返回。
实例:
def function():
print('This is a function')
a = 1+2
print(a)
#输出结果:
This is a function
3
python单引号(‘)、双引号(")、三引号(’‘’,“”")
# 单引号(')
print('I can print " ')
print('-\t-\\-\'-%-/-\n') #测试转义字符,个人理解,除了**"**不需要转义意外,其他情况和c中的字符串一致
# 双引号(")
print("I can print ' ")
print("-\t-\\-\'-%-/-\n") #同上,
# 三单引号(''')
print(''' I can print """ ''')
print('''i
love
you''') #特殊功能,可以直接打印多行内容,而前面两种情况需要显示输入\n才能换行
print('''-\t-\\-\'-%-/-\n''') #可以看出还是和普通的字符串类似,会转义.
# 三双引号(""")
print(""" I can print ''' """)
print("""i
love
you""") #和'''木有区别嘛
print("""-\t-\\-\'-%-/-\n""") #和'''木有区别
#输出结果:
I can print "
- -\-'-%-/-
I can print '
- -\-'-%-/-
I can print """
i
love
you
- -\-'-%-/-
I can print '''
i
love
you
- -\-'-%-/-
- 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!
遍历输入的代码;
如何验证密码的类型,以及简化逻辑语句;
特殊情况的处理,以及陷入循环,和break and continue的使用;
一轮检查结束后,进入下一轮的检查 不是直接结束
应该如何操作·······
1.break
break语句用来终止循环语句,即循环条件没有False条件或者序列还没被完全递归完,也会停止执行循环语句。
break语句用在while和for循环中。
如果您使用嵌套循环,break语句将停止执行最深层的循环,并开始执行下一行代码。
for letter in 'Python': # 第一个实例
if letter == 'h':
break
print('当前字母 :', letter)
var = 10 # 第二个实例
while var > 0:
print('当前变量值 :', var)
var = var - 1
if var == 5: # 当变量 var 等于 5 时退出循环
break
print("Good bye!")
#输出结果:
当前字母 : P
当前字母 : y
当前字母 : t
当前变量值 : 10
当前变量值 : 9
当前变量值 : 8
当前变量值 : 7
当前变量值 : 6
Good bye!
2.continue
continue 语句跳出本次循环,而break跳出整个循环。
continue 语句用来告诉Python跳过当前循环的剩余语句,然后继续进行下一轮循环。
continue语句用在while和for循环中。
continue语句的作用是跳过本次循环体中余下尚未执行的语句,立即进行下一次的循环条件判定,可以理解为仅结束本次循环。
注意:continue语句并没有使整个循环终止。
for letter in 'Python': # 第一个实例
if letter == 'h':
continue
print('当前字母 :', letter)
var = 10 # 第二个实例
while var > 0:
var = var - 1
if var == 5:
continue
print('当前变量值 :', var)
print("Good bye!")
#输出结果:
当前字母 : P
当前字母 : y
当前字母 : t
当前字母 : o
当前字母 : n
当前变量值 : 9
当前变量值 : 8
当前变量值 : 7
当前变量值 : 6
当前变量值 : 4
当前变量值 : 3
当前变量值 : 2
当前变量值 : 1
当前变量值 : 0
Good bye!
Process finished with exit code 0