FIsh论坛《零基础入门学习Python》| 第014讲 课后测试题及答案

FIsh论坛《零基础入门学习Python》 第014讲:字符串:各种奇葩的内置方法

测试题:

  1. 还记得如何定义一个跨越多行的字符串吗(请至少写出两种实现的方法)?
#方法一:使用三个单引号
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
  1. 三引号字符串通常我们用于做什么使用?
    三引号字符串在不赋值的情况下,通常当作跨行注释使用,例如:
'''这个在打印的时候看不到,主要可以用在代码编写过程的注释的作用。
 这样说,应该差不多。
 嗯哼~
'''
print(1)
输出结果:
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
  1. 如果使用负数作为索引值进行分片操作,按照第三题的要求你能够正确目测出结果吗?
    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
  1. 还是第三题那个字符串,请问下边语句会显示什么内容?
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


  1. 据说只有智商高于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
-	-\-'-%-/-
  1. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!

遍历输入的代码;

如何验证密码的类型,以及简化逻辑语句;

特殊情况的处理,以及陷入循环,和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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值