引用:
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