描述‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    在数学运算之中,除了加、减、乘、除运算之外,还有其他更多的运算,比如乘方、开方、对数运算等等,要实现这些运算,可以使用Python 中的math模块中。我们知道,Python中的模块是将我们需要的功能提前定义为函数置于文件中,以模块的形式导入后就可以调用其中的函数解决用户的问题了。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    请参考官方文档中math库中各函数的文档注释要求,完成程序模板中的函数定义(务必注意代码缩进)提供幂运算、最大公约数、最小公倍数、绝对值、向上取整 、向下取整、阶乘等运算函数,使自定义的函数的输入、输出和异常尽可能与math库中的函数一致,并使程序实现如下效果:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    程序运行后将输出菜单,用户根据菜单的提示输入命令,调用并执行对应功能:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    若输入命令为’pow’,则分两行依次输入一个数值x和一个整数n,并调用pow()函数计算并输出x的n次方。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    若输入指令为’gcd’,则在一行内输入两个正整数a、b(空格间隔),并调用gcd()函数计算并输出这两个正整数的最大公约数。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    若输入指令为’lcm’,则在一行内输入两个正整数a、b(空格间隔),并调用lcm()函数计算并输出这两个正整数的最小公倍数。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    若输入指令为’fabs’,则输入一个数值x,并调用fabs()函数计算并输出这个数的绝对值。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    若输入指令为’ceil’,则输入一个数值x,并调用ceil()函数计算并输出不小于该数的最小整数。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    若输入指令为’floor’,则输入一个数值x,并调用floor()函数计算并输出不大于该数的最大整数。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    若输入指令为’factorial’,则输入一个非负整数n,并调用factorial()函数计算并输出该数的阶乘。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    若输入指令为’fsum’,则在一行内输入若干个数值(空格间隔),并调用fsum()函数计算并输出所有输入数值之和。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    若输入指令不是上面任一个值,则直接输出’No such function!’。
    输入输出示例 :
    示例 1‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    输入:
    pow
    2
    3
    输出: 8.0
    示例 2‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    输入:
    gcd
    16 24
    输出: 8
    示例 3‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    输入:
    lcm
    16 24
    输出: 48
    示例 4‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    输入:
    fabs
    -3
    输出: 3
    示例 5‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    输入:
    ceil
    3.8
    输出: 4
    示例 6‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    输入:
    floor
    3.3
    输出: 3
    示例 7‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    输入:
    factorial
    5
    输出: 120
    示例 8‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    输入:
    fsum
    1 2 3 4 5
    输出: 15.0

    1. # ------------ ------- -------- ----------- -----------
    2. # @File : 5.4.2 自定义数学函数模块实验模板.py
    3. # @Contact : vasp@qq.com
    4. # @Copyright : 2018-2025, Wuhan University of Technology
    5. # @Modify Time: 2021/4/27 9:47
    6. # @Author : 赵广辉
    7. # @Version : 1.0
    8. # @License : 仅限用于Python程序设计基础实践教程(赵广辉,高等教育出版社)配套实验
    9. # ------------ ------- -------- ----------- -----------
    10. def choose_function(no):
    11. """接收一个字符串为参数,根据参数值判断问题类型,调用合适的函数进行操作。"""
    12. if no == 'pow': # 调用pow()函数,并输出其返回值
    13. x = float(input())
    14. n = int(input())
    15. print(pow(x, n))
    16. elif no == 'gcd': # 调用gcd()函数,并输出其返回值
    17. a, b = map(int, input().split())
    18. print(gcd(a, b))
    19. elif no == 'lcm': # 调用lcm()函数,并输出其返回值
    20. a, b = map(int, input().split())
    21. print(lcm(a, b))
    22. elif no == 'fabs': # 调用fabs()函数,并输出其返回值
    23. x = eval(input())
    24. print(fabs(x))
    25. elif no == 'ceil': # 调用ceil()函数,并输出其返回值
    26. x = eval(input())
    27. print(ceil(x))
    28. elif no == 'floor': # 调用floor()函数,并输出其返回值
    29. x = eval(input())
    30. print(floor(x))
    31. elif no == 'factorial': # 调用factorial()函数,并输出其返回值
    32. n = int(input())
    33. print(factorial(n))
    34. elif no == 'fsum': # 调用fsum()函数,并输出其返回值
    35. ls = list(map(eval, input().split()))
    36. print(fsum(ls))
    37. else:
    38. print('No such function!')
    39. def pow(x, n): # 幂运算函数
    40. """接收一个数字x和一个整数n为参数,返回x的n次幂的结果的浮点数类型
    41. 要求使pow(1.0, x) 和 pow(x, 0.0) 总是返回 1.0"""
    42. result = 1.0
    43. for i in range(n):
    44. result = result * x
    45. return result
    46. def gcd(a, b):
    47. """接收两个正整数为参数,返回两个数的最大公约数"""
    48. while a % b != 0:
    49. a, b = b, (a % b)
    50. return b
    51. def lcm(a, b):
    52. """接收两个正整数为参数,以整数类型返回两个数的最小公倍数"""
    53. s = a * b
    54. while a % b != 0:
    55. a, b = b, (a % b)
    56. return s // b
    57. def fabs(x):
    58. """返回x的绝对值"""
    59. if x < 0:
    60. return -x
    61. else:
    62. return x
    63. def ceil(x):
    64. """接受一个浮点数或整数,返回大于或等于该数的最小整数"""
    65. if int(x) == x or x < 0:
    66. return int(x)
    67. else:
    68. return int(x + 1)
    69. def floor(x):
    70. """接受一个浮点数或整数,返回不大于该数的最大整数"""
    71. if int(x) == x or x > 0:
    72. return int(x)
    73. else:
    74. return int(x - 1)
    75. def factorial(n):
    76. """接收一个非负整数n为参数,返回n的阶乘,0的阶乘值为1"""
    77. fact = 1
    78. for i in range(1, n + 1):
    79. fact = fact * i
    80. return fact
    81. def fsum(iterable):
    82. """接收一个元素为数值的序列为参数,以浮点数类型返回各元素之和"""
    83. result = 0.0
    84. for i in iterable:
    85. result = result + i
    86. return result
    87. if __name__ == '__main__':
    88. func_name = input()
    89. choose_function(func_name)