Python Lab Assignments

引用:

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
原文地址:https://www.cnblogs.com/crb912/p/11765425.html