学习小甲鱼Python入门(三)习题笔记-字符串 第15课课后练习

第15课

  • 测试题:
    • 还记得如何定义一个跨越多行的字符串吗(请至少写出两种实现的方法)?
    • 三引号字符串通常我们用于做什么使用?
    • 网址和\n \t的冲突
    • 字符串的提取
  • 动动手:
    • 请写一个密码安全性检查的脚本代码:check.py
  • 格式化
    • format位置参数和 关键字参数
      • format 语法 "{被替代}".format("字符串")
      • 根据说明填写相应的字符串格式化符号
      • 如果想要显示Pi = 3.14,format前边的字符串应该怎么填写呢?
      • 请问以下这行代码会打印什么内容?
    • 编写一个进制转换程序

测试题:

还记得如何定义一个跨越多行的字符串吗(请至少写出两种实现的方法)?

		``1、用6个引号
		  2、 \n
		  3、str2 = '待卿长发及腰,我必凯旋回朝。\
					昔日纵马任逍遥,俱是少年英豪。

		  4、>>> str3 = ('待卿长发及腰,我必凯旋回朝。'
                        '昔日纵马任逍遥,俱是少年英豪。')

三引号字符串通常我们用于做什么使用?

	``注释  或 回车多行``

网址和\n \t的冲突

file1 = open(‘C:\windows\temp\readme.txt’, ‘r’) 表示以只读方式打开“C:\windows\temp\readme.txt”这个文本文件,但事实上这个语句会报错,知道为什么吗?你会如何修改?
\t 制表符 \r 回车符 的原因,用open(r'C:\windows\temp\readme.txt', 'r)或c:\\windows\\

字符串的提取

有字符串:str1 = ‘鱼C资源打包’,请问如何提取出子字符串:‘www.fishc.com’

>>> str1=''
>>>> str2=str1[str1.index("w"):(str1.index("om")+2)]
>>> str2
'www.fishc.com'
  1. 如果使用负数作为索引值进行分片操作,按照上题的要求你能够正确目测出结果吗?

  2. 还是字符串提取那题的字符串,请问下边语句会显示什么内容?

  3. str1[20:-36]
    “”# 显示为空
    数字要从小到大

  4. 据说只有智商高于150的鱼油才能解开这个字符串(还原为有意义的字符串):str1 = ‘i2sl54ovvvb4e3bferi32s56h;$c43.sfc67o0cm99’

    >>> for i in str1:
     print(i,end=",")	
     i,2,s,l,5,4,o,v,v,v,b,4,e,3,b,f,e,r,i,3,2,s,5,6,h,;,$,c,4,3,.,s,f,c,6,7,o,0,c,m,9,9,
    

【正确的是 ↓↓】

>>> str1[::3]
'ilovefishc.com'

动动手:

请写一个密码安全性检查的脚本代码:check.py

密码安全性检查代码

1、低级密码要求:

  1. 密码由单纯的数字或字母组成
  2. 密码长度小于等于8位
each=3
print("请输入需要检查的密码组合:")
while each>0:
           temp=input()
           password=str(temp)
           if len(password)<=8 and  password.isalnum():
                                 print("密码合规")
                                 break
           else:
                      each-=1
                      if each!=0:print("密码格式错误,请重新输入密码:")
                      else:print("密码格式错误,次数超出范围,")
                      >>> 
= RESTART: C:/Users/Administrator/AppData/Local/Programs/Python/Python38-32/00.py
请你输入密码:
1.
密码格式错误,请重新输入密码:
1.
密码格式错误,请重新输入密码:
1.
次数超出范围,
Created with Raphaël 2.2.0 开始 次数3次 each=3 打印 “”请您输入密码“” print() 判断条件 each>0 判断条件 是否8位内and 是否字母数字组成 input输入密码框 str字符串格式 打印“密码合规” 结束 次数-1 判断条件 次数是否!=0 打印格式错误,请重新输入 打印格式错误,次数超出范围 yes no yes no yes no

2、中级密码要求:

  1. 密码至少由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合
  2. 密码长度不能低于8位
symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'
i=3
x=0
password=str(input("请输入需要检查的密码组合:"))
while len(password)<9  or password.isspace():
           password=str(input('密码不能使用空格并需大于8位,请重新输入:'))
for each in password:
           if each in symbols:x+=1;break
for each in password:
           if each in chars:x+=1 ;break
for each in password:           
           if each in nums:x+=1  ;break         
if x>=2:print("密码合规")
else:print("密码需至少用两张方式组合")
                      

高级密码要求:

  1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
  2. 密码只能由字母开头
  3. 密码长度不能低于16位
symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'
i=3
x=0
password=str(input("请输入需要检查的密码组合:"))
while len(password)<17  or password.isspace() or not password[0].isalpha():
          password=str(input('密码不能使用空格并需大于8位,并用字母开头,请重新输入:'))
for each in password:
          if each in symbols:x+=1;break
for each in password:
          if each in chars:x+=1 ;break
for each in password:           
          if each in nums:x+=1  ;break         
if x>=3:print("密码合规")
else:print("密码需至少用三种方式组合")

** =====[小甲鱼的答案] **

请写一个密码安全性检查的脚本代码:check.py
1.	# 密码安全性检查代码
2.	#
3.	# 低级密码要求:
4.	#   1. 密码由单纯的数字或字母组成
5.	#   2. 密码长度小于等于8位
6.	#
7.	# 中级密码要求:
8.	#   1. 密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合
9.	#   2. 密码长度不能低于8位
10.	#
11.	# 高级密码要求:
12.	#   1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
13.	#   2. 密码只能由字母开头
14.	#   3. 密码长度不能低于16位
15.	
16.	symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
17.	chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
18.	nums = '0123456789'
19.	
20.	passwd = input('请输入需要检查的密码组合:')
21.	
22.	# 判断长度
23.	length = len(passwd)
24.	
25.	while (passwd.isspace() or length == 0) :
26.	    passwd = input("您输入的密码为空(或空格),请重新输入:")
27.	
28.	if length <= 8:
29.	    flag_len = 1
30.	elif 8 < length < 16:
31.	    flag_len = 2
32.	else:
33.	    flag_len = 3
34.	
35.	flag_con = 0
36.	
37.	# 判断是否包含特殊字符
38.	for each in passwd:
39.	    if each in symbols:
40.	        flag_con += 1
41.	        break
42.	    
43.	# 判断是否包含字母
44.	for each in passwd:
45.	    if each in chars:
46.	        flag_con += 1
47.	        break
48.	
49.	# 判断是否包含数字
50.	for each in passwd:
51.	    if each in nums:
52.	        flag_con += 1
53.	        break    
54.	
55.	# 打印结果
56.	while 1 :
57.	    print("您的密码安全级别评定为:", end='')
58.	    if flag_len == 1 or flag_con == 1 :
59.	        print("低")
60.	    elif flag_len == 2 or flag_con == 2 :
61.	        print("中")
62.	    else :
63.	        print("高")
64.	        print("请继续保持")
65.	        break
66.	
67.	    print("请按以下方式提升您的密码安全级别:\n\
68.	    \t1. 密码必须由数字、字母及特殊字符三种组合\n\
69.	    \t2. 密码只能由字母开头\n\
70.	    \t3. 密码长度不能低于16位'")
71.	    break

格式化

format位置参数和 关键字参数

format 语法 “{被替代}”.format(“字符串”)

>>> "{0}{1}love ben{2}".format("i"," ","zi")#后面的字符串 ,对应到前面的位置
'i love benzi'
>>> "{a}{b}love ben{e}".format(a="i",b=" ",e="zi")#后面的字符串,根据a="i" 表达式子对应到前面
'i love benzi'

根据说明填写相应的字符串格式化符号

符 号 说 明
%c 格式化字符及其ASCII码
%s 格式化字符串
%d 格式化整数
%o 格式化无符号八进制数
%x 格式化无符号十六进制数
%X 格式化无符号十六进制数(大写)
%f 格式化定点数,可指定小数点后的精度
%e 用科学计数法格式化定点数
%g 根据值的大小决定使用%f或者%e
%G 根据值的大小决定使用%F或者%E

如果想要显示Pi = 3.14,format前边的字符串应该怎么填写呢?

  1. ‘{0}{1:.2f}’.format('Pi = ', 3.1415)

  2. ‘Pi = 3.14’

请问以下这行代码会打印什么内容?

“{{1}}”.format(“不打印”, “打印”)#双大括号 相当于转意符,是本应该是位置参数的1 没有了作用
‘{1}’

“{1}”.format(“不打印”, “打印”) 输出是 打印
“{0}”.format(“不打印”, “打印”) 输出是 不打印

编写一个进制转换程序

q=True
while q:
           num=input("请输入一个整数(输入Q结束程序):")
           num=str(num).upper()#统一成大写
           if num!="Q":
                      num=int(num)
                      print("十进制→十六进制:%d->ox%x"%(num,num))
                      #语法  "%d->%x"%(num,num)
                      print('十进制 -> 八进制 : %d -> 0o%o' % (num, num))
                      print("十进制→二进制:%d-> "% num,bin(num))
                      #语法  "%d-> "%  num,bin(num)
                      #            bin(5)    '0b101'
           else:
                      q=False

【知识点】
1、进制转换 语法 ‘%d->%x’%(num,num)
二进制 '%d-> '% num,ben(num) 注意 第二个%后面的 空格
2、新的while循环格式

q=True
while q:
	print("执行语句")
else:q=False
``

你可能感兴趣的:(学习小甲鱼Python入门(三)习题笔记-字符串 第15课课后练习)