Python Lab Assignments
2024-09-02 13:11:17
引用:
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
最新文章
- Android - 设置TextView的字体行间距 - TextView
- 修改加粗cmd和powershell命令行的中文字体
- html css布局
- 【知识分享】UIButton setTitle 设置为空 失效
- Java中的数组排序
- hdoj 2544 最短路【dijkstra or spfa】
- 关于JFace的自定义对话框(Dialog类)
- 独立博客网站FansUnion.cn操作2多年的经验和教训以及未来计划
- SpringMvc多视图配置(jsp、velocity、freemarker) velocity在springmvc.xml配置VelocityViewResolver,VelocityConfigurer,FreeMarkerConfigurer,FreeMarkerViewResolver
- python进行各类API的使用
- 【luogu2161】【SHOI2009】Booking会场预约
- James Munkres Topology: Lemma 21.2 The sequence lemma
- Hadoop YARN架构设计要点
- 正向选择(positive selection)、中性选择(neutral selection)、平衡选择(balancing selection)示意图
- AtCoder Regular Contest 100 (ARC100) E - Or Plus Max 其他
- 56.关于vue项目的seo问题
- zk observer 节点
- 关闭centos自动升级内核
- mongodb的serverstatus
- docker中间件安装记录
热门文章
- nowcoder911L 最优子区间
- Python--单元四练习
- [LeetCode] 153. Find Minimum in Rotated Sorted Array 寻找旋转有序数组的最小值
- [LeetCode] 82. Remove Duplicates from Sorted List II 移除有序链表中的重复项之二
- [LeetCode] 63. Unique Paths II 不同的路径之二
- [LeetCode] 57. Insert Interval 插入区间
- Windows搭建FTP/Http文件共享(利用IIS)
- GreenPlum 大数据平台--增加segment
- 用户增长模型AARRR模型
- guava(一)Preconditions