博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python【每日一问】28
阅读量:4982 次
发布时间:2019-06-12

本文共 2417 字,大约阅读时间需要 8 分钟。

问:

【基础题】:求 1+2!+3!+...+20! 的和

【提高题】:两个乒乓球队进行比赛,各出三人。甲队为 a,b,c 三人,乙队为 x,y,z 三人。已抽签决定比赛名单。 有人向队员打听比赛的名单。 a 说他不和 x 比, c 说他不和 x,z 比,请找出三队赛手的名单

答:

基础题:求 1+2!+3!+...+20! 的和

方法1:

def factorial(n):    if n == 0 or n == 1:        return 1    else:        return factorial(n - 1) * n​​my_sum = sum(factorial(i) for i in range(1, 21))print(f"1! + 2! + 3! + 4! + 5! + ... + 20!={my_sum}")

 

方法2:

def recursion(n): #'定义递归函数实现求阶乘功能'    if n == 1:        return 1    else:        return n*recursion(n-1)​​list_recursion = []  # 定义一个空的列表,将调用递归函数生成的阶乘值追加到列表for i in range(1,21):    list_recursion.append(recursion(i))  # 将调用递归函数生成的阶乘值追加到列表​​print(sum(list_recursion))

 

方法3:

def recursion(n): #'定义递归函数实现求阶乘功能'    if n == 1:        return 1    else:        return n*recursion(n-1)​​Sum = 0for i in range(1, 21):    Sum += recursion(i)print(Sum)

 

方法4:

def factorial(num):    if num == 1:        return 1    else:        return num * factorial(num - 1)​​def sum_factorial():    iteration = int(input("Input the max iteration:"))    result = 0    for i in range(1, iteration+1):        result += factorial(i)    print("Alright, we catch the result:{}".format(result))​​if __name__ == '__main__':    sum_factorial()

 

方法5:

def factorial(n):    f = 1    for i in range(1, n+1):        f = f * i    return f​num = int(input("请输入一个数字:"))sum = 0if num < 0:    print("抱歉,负数没有阶乘")elif num == 0:    print("0的阶乘为1")else:    for i in range(1, num+1):        sum += factorial(i)    print(sum)

 

方法6:

def factorial(number):    start = 1    fact = 1    while start <= number:        yield fact        start += 1        fact *= start​​fact = factorial(20)sum = 0​for i in fact:    sum += iprint(sum)

 

 

提高题:两个乒乓球队进行比赛,各出三人。甲队为 a,b,c 三人,乙队为 x,y,z 三人。已抽签决定比赛名单。 有人向队员打听比赛的名单。 a 说他不和 x 比, c 说他不和 x,z 比,请找出三队赛手的名单。

 

from itertools import permutations​team_a = ["a", "b", "c"]team_b = ["x", "y", "z"]​possible_match_lists = []​for possible_team_b_sequence in list(permutations(team_b)):    possible_match_lists.append(dict(zip(team_a, possible_team_b_sequence)))​final_match_lists = list(filter(lambda x: x["a"] != "x" and \                                x["c"] != "x" and \                                x["c"] != "z", possible_match_lists))​for index, match_list in enumerate(final_match_lists):    print(f"solution{index+1}")    for competitiors in match_list.items():        print(" vs ".join(competitiors))

 

转载于:https://www.cnblogs.com/ElegantSmile/p/10895119.html

你可能感兴趣的文章
MongoDB的简单使用
查看>>
【noip2004】虫食算——剪枝DFS
查看>>
java小技巧
查看>>
POJ 3204 Ikki's Story I - Road Reconstruction
查看>>
SQL中Group By的使用
查看>>
两个表格中数据不用是一一对应关系--来筛选不同数据,或者相同数据
查看>>
js05-DOM对象二
查看>>
mariadb BINLOG_FORMAT = STATEMENT 异常
查看>>
2018 Multi-University Training Contest 10 - Count
查看>>
HDU6203 ping ping ping
查看>>
Fireworks基本使用
查看>>
Java基础常见英语词汇
查看>>
UINavigationController的视图层理关系
查看>>
POJ 1308 Is It A Tree?(并查集)
查看>>
N进制到M进制的转换问题
查看>>
php PDO (转载)
查看>>
[置顶] 一名优秀的程序设计师是如何管理知识的?
查看>>
highcharts曲线图
查看>>
extjs动态改变样式
查看>>
宏定义
查看>>