引用:

Lab 1

对于任何Web应用程序登录,都需要根据数据库规则验证用户密码. 假定某个Web应用程序,

其有效密码的条件是:

  • a)密码长度应在6到16个字符之间
  • b)至少要有一个数字
  • c)至少包含有[$ @!*] 中一个特殊字符(中括号不计入).
  • d)应至少包含一个小写字母和至少一个大写字母

    要求实现一个lab1.py, 该程序实现有函数 check_valid_password,

入口参数:

  • 字符串: 用户密码

函数返回值(按顺序):

  • 1.布尔值: True或False, True表明有效的用户密码, False表名用户密码无效.
  • 2.字符串: 具体的错误信息(中文或英文皆可), 或者'ok' (表示没有错误)

Lab 2:

编写一个Python函数,该函数接受用户的英文句子(不用校验)并显示以下内容:

  • a)中间的单词 (如果是偶数个, 则取左边的那个)
  • b)句子中最长的单词
  • c)颠倒句子中的所有单词

以上参考答案:

Lab1

# lab1.py
def check_valid_password(password: str):
if len(password) < 6 or len(password) > 16:
return False, '密码长度在6-16个字符之间'
has_number, has_lowercase, = False, False
has_uppercase, special_char = False, False
for s in password:
if s.isnumeric():
has_number = True
if s.lower():
has_lowercase = True
if s.isupper():
has_uppercase = True
if s in ['$', '@', '!', '*']:
special_char = True
if has_number is False:
return False, '缺少数字'
if has_lowercase is False:
return False, '缺少小写字母'
if has_uppercase is False:
return False, '缺少大写字母'
if special_char is False:
return False, '缺少特殊字符'
return True, 'ok'

Lab1的检验程序

from lab1 import check_valid_password

def check_your_lab1():
assert len(check_valid_password('hello')) == 2 # 检测返回值个数
assert check_valid_password('hello')[0] is False # 字段长度校验
assert check_valid_password('hello hi ha')[0] is False # 缺少数字校验
assert check_valid_password('password2')[0] is False # 缺少特殊字符
assert (True, 'ok') == check_valid_password('Password2@') if __name__ == '__main__':
check_your_lab1()

Lab2

def middle(s):
sliced_string = s.split(' ')
valid_string = []
for word in sliced_string:
temp = ''.join(e for e in word if e.isalnum())
valid_string.append(temp)
length = len(valid_string)
if length == 0:
return ""
elif length % 2 != 0:
return valid_string[length//2]
elif length % 2 == 0:
return valid_string[length//2 - 1] def max_long(s):
current_max = 0
max_long_word = ''
sliced_string = s.split(' ')
for word in sliced_string:
if len(word) > current_max:
current_max = len(word)
max_long_word = word
return ''.join(e for e in max_long_word if e.isalnum()) def reverse(s):
sliced_string = s.split(' ')
valid_string = []
for word in sliced_string:
temp = ''.join(e for e in word if e.isalnum())
valid_string.append(temp)
return ' '.join(valid_string[::-1]) if '__main__' == __name__:
input_string = input('请输入一个句子')
print('你输入的句子为: ', input_string) # 示例: "good morning! I am bob!"
print('middle: ', middle(input_string))
print('longest word: ', max_long(input_string))
print('reverse: ', reverse(input_string))

演示:

请输入一个句子>? "good morning! I am bob!"
你输入的句子为: "good morning! I am bob!"
middle: I
longest word: morning
reverse: bob am I morning good

最新文章

  1. Android - 设置TextView的字体行间距 - TextView
  2. 修改加粗cmd和powershell命令行的中文字体
  3. html css布局
  4. 【知识分享】UIButton setTitle 设置为空 失效
  5. Java中的数组排序
  6. hdoj 2544 最短路【dijkstra or spfa】
  7. 关于JFace的自定义对话框(Dialog类)
  8. 独立博客网站FansUnion.cn操作2多年的经验和教训以及未来计划
  9. SpringMvc多视图配置(jsp、velocity、freemarker) velocity在springmvc.xml配置VelocityViewResolver,VelocityConfigurer,FreeMarkerConfigurer,FreeMarkerViewResolver
  10. python进行各类API的使用
  11. 【luogu2161】【SHOI2009】Booking会场预约
  12. James Munkres Topology: Lemma 21.2 The sequence lemma
  13. Hadoop YARN架构设计要点
  14. 正向选择(positive selection)、中性选择(neutral selection)、平衡选择(balancing selection)示意图
  15. AtCoder Regular Contest 100 (ARC100) E - Or Plus Max 其他
  16. 56.关于vue项目的seo问题
  17. zk observer 节点
  18. 关闭centos自动升级内核
  19. mongodb的serverstatus
  20. docker中间件安装记录

热门文章

  1. nowcoder911L 最优子区间
  2. Python--单元四练习
  3. [LeetCode] 153. Find Minimum in Rotated Sorted Array 寻找旋转有序数组的最小值
  4. [LeetCode] 82. Remove Duplicates from Sorted List II 移除有序链表中的重复项之二
  5. [LeetCode] 63. Unique Paths II 不同的路径之二
  6. [LeetCode] 57. Insert Interval 插入区间
  7. Windows搭建FTP/Http文件共享(利用IIS)
  8. GreenPlum 大数据平台--增加segment
  9. 用户增长模型AARRR模型
  10. guava(一)Preconditions