• 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
    
  • 相关阅读:
    蝶恋花
    JVM解毒——JVM与Java体系结构
    超赞!IDEA 最新版本,支持免打扰和轻量模式!
    SpringBoot 结合 Spring Cache 操作 Redis 实现数据缓存
    神奇的 SQL 之 WHERE 条件的提取与应用
    终于放弃了单调的swagger-ui了,选择了这款神器—knife4j
    Git 高级用法,喜欢就拿去用
    既然有 HTTP 请求,为什么还要用 RPC 调用?
    SpringBoot和Spring到底有没有本质的不同?
    一条简单的更新语句,MySQL是如何加锁的?
  • 原文地址:https://www.cnblogs.com/crb912/p/11765425.html
Copyright © 2020-2023  润新知