描述
完成程序模板中的函数定义和调用部分(务必注意代码缩进),使程序实现如下效果:
在第一行输入一个指令
- 若输入指令为1,则调用函数print_hi_human(),输出“人类,你好!”
- 若输入指令为2,则调用函数say_hi_human(),并输出其返回值“人类,你好!”
- 若输入指令为3,则再输入一个人名,并调用函数say_hi_person(),并输出其返回值为“,你好!”(其中为输入的人名)
- 若输入指令为4,则分两行依次输入人名和性别(男或女),并调用函数say_hi_gender(),并输出其返回值。函数的返回值为“尊敬的*先生/女士,欢迎来到火星!”。根据性别确定称谓,男性称为“先生”,女性称为“女士”,不确定性别时称为“先生/女士”,返回值为替换了姓名与称谓的欢迎字符串 。
- 若输入指令为5,则在一行内输入人名和性别(男或女,性别可省略),以空格间隔,并调用函数say_hi_default(),并输出其返回值。函数的返回值为“尊敬的*先生/女士,欢迎来到火星!”。根据性别值确定称谓,男性称为“先生”,女性称为“女士”,不确定性别时称为“先生/女士”。当函数调用时未给出性别时,默认按男性处理。返回值为替换了姓名与称谓的欢迎字符串
- 若输入指令为6,则在一行内输入多个人名,以空格间隔,并调用函数say_hi_multi_parameter(),分多行对每个人名输出“*,你好!”
- 若输入指令不是上面任一值,则直接输出“再见!”
示例 1
输入:
1
输出:人类,你好!
示例2
输入:
2
输出:人类,你好!
示例3
输入:
3
李白
输出:李白,你好!
示例4
输入:
4
李白
男
输出: 尊敬的李白先生,欢迎来到火星!
示例5
输入:
4
李清照
女
输出: 尊敬的李清照女士,欢迎来到火星!
示例6
输入:
4
李白
杜甫
输出: 尊敬的李白先生/女士,欢迎来到火星!
示例7
输入:
5
李白 男
输出: 尊敬的李白先生,欢迎来到火星!
示例8
输入:
5
李清照 女
输出: 尊敬的李清照女士,欢迎来到火星!
示例9
输入:
5
李白 杜甫
输出: 尊敬的李白先生/女士,欢迎来到火星!
示例10
输入:
5
李白
输出: 尊敬的李白先生,欢迎来到火星!
示例11
输入:
6 李白 杜甫 柳宗元 李商隐 李清照
输出:
李白,你好!
杜甫,你好!
柳宗元,你好!
李商隐,你好!
李清照,你好!
示例12
输入:
100
输出:
再见
# ------------ ------- -------- ----------- -----------
# @File : 5.4.1 来自计算机的问候实验模板.py
# @Contact : vasp@qq.com
# @Copyright : 2018-2025, Wuhan University of Technology
# @Modify Time: 2021/4/27 8:41
# @Author : 赵广辉
# @Version : 1.0
# @License : 仅限用于Python程序设计基础实践教程(赵广辉,高等教育出版社)配套实验
# ------------ ------- -------- ----------- -----------
# 代码文档注释中有函数测试数据,直接运行文件时,默认会运行doctest。
# 运行时可点if __name__ == '__main__':旁边的绿三角,运行“5.4.1 来自计算机的问候”
# 或删除文档注释中>>> 开头的行和其下面的输出行
def choose_function(no):
"""接收一个字符串为参数,根据参数值判断问题类型,调用合适的函数进行操作。"""
if no == '1': # 调用函数print_hi_human(),输出“人类,你好!”
print_hi_human()
elif no == '2': #调用函数say_hi_human(),并输出其返回值
print(say_hi_human())
elif no == '3': #输入一个人名,并调用函数say_hi_person(),并输出其返回值
person_name = input() # 输入人名
print(say_hi_person(person_name))
elif no == '4': #输入人名和性别(男或女),并调用函数say_hi_gender(),并输出其返回值
person_name = input() # 输入人名
person_gender = input() # 输入性别
print(say_hi_gender(person_name, person_gender))
elif no == '5': #在一行内输入人名和性别(男或女,性别可省略),以空格间隔,并调用函数say_hi_default(),并输出其返回值
person_info = input().split() # 输入人名与性别,性别可省略。如输入:李白 男 或 李白
print(say_hi_default(*person_info))
elif no == '6': #在一行内输入多个人名,以空格间隔,并调用函数say_hi_multi_parameter(),分多行对每个人名输出“***,你好!”
person_names=input().split()
say_hi_multi_parameter(*person_names)
else:
print('再见')
def print_hi_human(): # 函数名用小写字母
"""文档注释,双引号,说明函数的参数、功能和返回值等。
定义一个名为print_hi_human的无参数函数,其功能是打印一句问候语,
这个函数没有return语句,即没有返回值,或者说其返回值为None。
# >>> print_hi_human()
# 人类,你好!
"""
print("人类,你好!")
def say_hi_human(): # 函数名用小写字母
"""无参数函数,其功能是返回字符串“人类,你好!”。
return语句将函数处理结果返回给调用处,此函数的返回值为一个字符串。
# >>> say_hi_human()
# "人类,你好!"
"""
return "人类,你好!"
def say_hi_person(full_name): # 函数名用小写字母,函数名填空
"""定义一个名为say_hi_person的有参数函数,其功能是返回一句问候语,
'full_name,你好!'(full_name为传入的参数)。
@参数 full_name:人名,字符串类型。
# >>> say_hi_person('李明')
# '李明,你好!'
"""
return f'{full_name},你好!'
def say_hi_gender(full_name, gender):
"""定义一个名为say_hi_gender的有参数函数,其功能是返回一句问候语。
@参数 full_name:人名,字符串类型
@参数 gender:性别,字符串类型
根据参数gender值确定性别称谓,男性称为“先生”,女性称为“女士”,
gender值不是'男'或'女'时称为“先生/女士”
返回值为替换了姓名与称谓的欢迎字符串。
# >>> say_hi_gender('李明', '男')
# '尊敬的李明先生,欢迎来到火星!'
# >>> say_hi_gender('王佳', '张亮')
# '尊敬的王佳先生/女士,欢迎来到火星!'
"""
if gender == '男':
title = '先生'
elif gender == '女':
title = '女士'
else:
title = '先生/女士'
return f'尊敬的{full_name}{title},欢迎来到火星!'
def say_hi_default(full_name, gender='男'):
"""定义一个名为say_hi_default的有参数函数,其功能是返回一句问候语。
根据性别gender值确定称谓,男性称为“先生”,女性称为“女士”,
gender值不是'男'或'女'时称为“先生/女士”
当函数调用时未给出gender时,默认按男性处理
返回值为替换了姓名与称谓的欢迎字符串
例如:尊敬的李白先生,欢迎来到火星!
@参数 full_name:人名,字符串类型
@参数 gender:默认值参数,字符串类型,表示性别,默认值为'男'
# >>> say_hi_default(person_name)
# '尊敬的李明先生,欢迎来到火星!'
# >>> say_hi_default(person_name, '女')
# '尊敬的李明女士,欢迎来到火星!'
"""
if gender == '男':
title = '先生'
elif gender == '女':
title = '女士'
else:
title = '先生/女士'
return f'尊敬的{full_name}{title},欢迎来到火星!'
# *加变量名,可接收不限数量的参数
def say_hi_multi_parameter(*names):
"""接收一个不定参数,可接收不限制数量的参数,遍历这个不定参数,分别输出问候语。
# >>> say_hi_multi_parameter('杜甫', '李白')
# 杜甫,你好!
# 李白,你好!
"""
for name in names: # 遍历输出
print(f"{name},你好!")
if __name__ == '__main__':
op_no = input()
choose_function(op_no)