定义 input_pswd函数,提示用户输入密码,如果用户输入长度<8,抛出异常,如果用户输入长度>=8<=15.且包含(~I@#$%&*)中的至少两个字符,返回输入的密码。

一道python面试题

题目

🧊定义 input_pswd函数,提示用户输入密码,如果用户输入长度<8,抛出异常,如果用户输入长度>=8<=15.且包含(~I@#$%&*)中的至少两个字符,返回输入的密码。

知识点

抛出异常:主动让程序崩溃。
语法🍕:

raise 异常类型

结构说明:

结构说明
raise关键字;固定写法
异常类型可以是系统提供的异常类型(IndexError、ValueError、TypeError等),也可以是自定义类型(自定义错误类型必须是Exception的子类);

代码

class PasswordError(Exception):
    # 在错误类型中重写__str__方法,可以定制错误提示信息
    def __str__(self):
        return '密码输入有误!'


def input_pswd():
    pswd = input('请输入密码:')
    if len(pswd) < 8:
        raise PasswordError

    if 8 <= len(pswd) <= 15:
        str1 = '(~!@#$%^&*)'
        str2 = ''
        for i in pswd:
            if i in str1 and i not in str2:
                str2 += i
        if len(str2) >= 2:
            return pswd
        raise PasswordError
    return pswd


print(input_pswd())
### 编程中 `required` 关键字的具体含义和用法 在多种编程语言和技术框架中,`required` 关键字被广泛应用于定义某些参数、字段或配置项的必要性。以下是关于该关键字在不同上下文中的具体解释: #### 1.函数参数声明中的应用 许多现代编程语言支持通过显式的语法标记来指定哪些参数是必需的。如果调用者未提供这些参数,则会引发错误或者编译失败。 ##### 示例:Dart 中的 `required` 参数 在 Dart 2.13 版本及其后续版本中,`required` 被用来标注构造函数中的必填命名参数[^2]。这意味着当创建对象实例时,必须为带有此标签的参数赋予具体的值。 ```dart class Person { final String name; final int age; Person({required this.name, this.age = 18}); } void main() { var person = Person(name: "Alice"); // 正确,提供了 required 的 name 参数 // var invalidPerson = Person(); // 错误,缺少 required 的 name 参数 } ``` #### 2. 面向对象编程(OOP)中的强制初始化 对于面向对象的语言来说,在类的设计阶段可以规定某些属性必须由使用者设置初始值才能完成实例化过程。 ##### 示例:Java 构造器内的逻辑校验 尽管 Java 并无直接对应的 `required` 关键词,但是可以通过抛出异常的方式实现相似效果——即阻止非法状态的对象生成。 ```java public class Product { private String productName; public Product(String productName){ if(productName == null || productName.trim().isEmpty()){ throw new IllegalArgumentException("Product Name is required."); } this.productName = productName; } // Getter 方法省略... } // 测试代码片段 new Product(null); // 将触发 IllegalArgumentException 异常提示ProductName不可为空白。 ``` #### 3. Web 开发领域表单验证机制 HTML5 提供了一种简便的方法让开发者无需借助 JavaScript 即可执行客户端侧的基础数据有效性检验。“required” 属性可以直接附加到 `<input>` 或其他交互控件之上,从而告知浏览器相应位置不得留空提交。 ```html <form action="/submit-form"> Username:<br> <input type="text" name="username" required><br> Password:<br> <input type="password" name="pswd"><br><br> <input type="submit" value="Submit"> </form> <!-- 如果用户尝试不填写用户名就点击 Submit 按钮,那么浏览器将会自动拦截并提醒他们补全信息 --> ``` #### 4. JSON Schema 定义文档结构约束条件 除了传统意义上的程序设计之外,JSON Schema 等描述性工具也经常利用类似的术语表达特定节点的存在义务。例如,“properties”的子集可能关联另一个名为“required”的列表,列举那些不可或缺的数据成员名字串集合。 ```json { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "firstName": {"type":"string"}, "lastName":{"type":"string"} }, "required":["firstName"] } /* 上述模式表明任何符合它的 JSON 对象都至少包含 firstName 字段 */ ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值