有一个一次性录入人名并返回人名的方法(人名只考虑存英文),为其添加一个装饰器,确保人名首字母大写
时间: 2024-03-07 22:48:19 浏览: 22
可以使用一个装饰器来确保人名的首字母大写,具体实现如下:
```python
def capitalize_name(func):
def wrapper(*args, **kwargs):
name = func(*args, **kwargs)
return name.capitalize()
return wrapper
@capitalize_name
def input_name():
name = input("Please enter your name: ")
return name
print(input_name())
```
装饰器 `capitalize_name` 接收一个函数作为参数,返回一个新的函数 `wrapper`,`wrapper` 函数的作用是调用被装饰的函数 `func`,并将返回值的首字母大写后返回。
被装饰的函数是 `input_name`,它的作用是从用户输入中获取一个人名并返回。通过 `@capitalize_name` 语法将 `capitalize_name` 装饰器应用在 `input_name` 上,确保输入的人名的首字母大写。
相关问题
有一个录入人姓名(英文)的函数,为其添加装饰器,确保录入后的人姓名都是大写开头。
好的,这里是一个 Python 代码示例,用于定义一个装饰器,确保录入的人名都是大写开头:
```python
def uppercase_name(func):
def wrapper(*args, **kwargs):
name = func(*args, **kwargs)
return name.capitalize()
return wrapper
@uppercase_name
def input_name():
name = input("请输入人名:")
return name
```
这里定义了一个名为 `uppercase_name` 的装饰器,它实际上是一个闭包函数,接受一个函数对象 `func` 作为参数。在闭包函数内部,定义了一个名为 `wrapper` 的函数,它接受任意参数,并在调用原始函数 `func` 之前,将录入的人名转换为大写开头的形式,然后再返回给调用者。
在装饰器定义完成后,我们使用 `@uppercase_name` 语法将 `input_name` 函数进行装饰,这样,每次调用 `input_name` 函数录入人名时,都会自动应用上述装饰器,确保录入的人名都是大写开头的形式。
录入学生的名字,如果名字存在则回复人名已存在,无法录入,直到输出空字符串,然后逆序输出。Python
好的,我来给你写一个 Python 的程序实现:
```python
names = []
while True:
name = input("请输入学生姓名:")
if name == "":
break
elif name in names:
print("人名已存在,无法录入!")
else:
names.append(name)
names.reverse()
print("学生姓名列表(逆序):")
for name in names:
print(name)
```
程序首先定义了一个空列表 `names` 来存储输入的学生姓名。然后进入一个无限循环,每次循环都会要求输入一个学生姓名。如果输入的是空字符串,则跳出循环;如果输入的姓名已经存在于列表中,则输出“人名已存在,无法录入!”;如果输入的姓名是一个新的姓名,则将其添加到列表中。循环结束后,程序使用 `reverse()` 方法将列表逆序排列,并使用 `for` 循环逐个输出学生姓名。