问:

【基础题】:求 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 = 0
for 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 = 0
if 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 += i
print(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))

Python【每日一问】28的更多相关文章

  1. [python每日一练]--0012:敏感词过滤 type2

    题目链接:https://github.com/Show-Me-the-Code/show-me-the-code代码github链接:https://github.com/wjsaya/python ...

  2. Python每日一练(1):计算文件夹内各个文章中出现次数最多的单词

    #coding:utf-8 import os,re path = 'test' files = os.listdir(path) def count_word(words): dic = {} ma ...

  3. python每日一函数 - divmod数字处理函数

    python每日一函数 - divmod数字处理函数 divmod(a,b)函数 中文说明: divmod(a,b)方法返回的是a//b(除法取整)以及a对b的余数 返回结果类型为tuple 参数: ...

  4. 每日一问:Android 消息机制,我有必要再讲一次!

    坚持原创日更,短平快的 Android 进阶系列,敬请直接在微信公众号搜索:nanchen,直接关注并设为星标,精彩不容错过. 我 17 年的 面试系列,曾写过一篇名为:Android 面试(五):探 ...

  5. 每日一问:谈谈 volatile 关键字

    这是 wanAndroid 每日一问中的一道题,下面我们来尝试解答一下. 讲讲并发专题 volatile,synchronize,CAS,happens before, lost wake up 为了 ...

  6. 每日一问:讲讲 Java 虚拟机的垃圾回收

    昨天我们用比较精简的文字讲了 Java 虚拟机结构,没看过的可以直接从这里查看: 每日一问:你了解 Java 虚拟机结构么? 今天我们必须来看看 Java 虚拟机的垃圾回收算法是怎样的.不过在开始之前 ...

  7. 每日一问:你了解 Java 虚拟机结构么?

    对于从事 C/C++ 程序员开发的小伙伴来说,在内存管理领域非常头疼,因为他们总是需要对每一个 new 操作去写配对的 delete/free 代码.而对于我们 Android 乃至 Java 程序员 ...

  8. 每日一问:LayoutParams 你知道多少?

    前面的文章中着重讲解了 View 的测量流程.其中我提到了一句非常重要的话:View 的测量匡高是由父控件的 MeasureSpec 和 View 自身的 `LayoutParams 共同决定的.我们 ...

  9. 每日一问:简述 View 的绘制流程

    Android 开发中经常需要用一些自定义 View 去满足产品和设计的脑洞,所以 View 的绘制流程至关重要.网上目前有非常多这方面的资料,但最好的方式还是直接跟着源码进行解读,每日一问系列一直追 ...

  10. python每日一练:0007题

    第 0007 题: 有个目录,里面是你自己写过的程序,统计一下你写过多少行代码.包括空行和注释,但是要分别列出来. # -*- coding:utf-8 -*- import os def count ...

随机推荐

  1. contos7自启动django服务

    研究了很多种办法 1.新建一个sh 文件 vi django_autostart.sh 2.编辑文件内容 #!/bin/bash #chkconfig:345 61 61 //此行的345参数表示,在 ...

  2. MTSC2019-腾讯WeTest独家揭秘移动游戏测试和质量保障 QA 黑科技

    WeTest 导读 TesterHome 联合腾讯 WeTest 出品 MTSC2019 重磅游戏测试 Topic ,首次公开揭秘腾讯亿级用户游戏背后的质量保障 QA 黑科技. 2019 年,中国游戏 ...

  3. Java 之 Properties 集合

    一.Properties 概述 Properties 是Hashtable的子类,不允许key和value是null,并且它的key和value的类型都是String. 二.常用方法 1.构造方法 P ...

  4. 如何构思你的iOS App应用

    转自:http://mobile.51cto.com/hot-311134.htm 在twitter上,听到不少人问,我也有App 在App Store上面卖,为什么我的App卖得这么少啊?于是我就上 ...

  5. 【转载】UNICODE与ASCII的区别

    原文地址:https://blog.csdn.net/lx697/article/details/5914417 最近的项目涉及到了国际化的问题,由于之前并没有接触到UNICODE编码,因此,在项目期 ...

  6. Kafka Manager几个指标含义

    记忆早退 Brokers Spread:看作broker使用率,如kafka集群9个broker,某topic有7个partition,则broker spread: 7 / 9 = 77% Brok ...

  7. json序列化时间日期数据注意

    通过json序列化时间日期格式数据的时候需要注意,不能直接序列化,我写了一个类,可以借用 import json from datetime import datetime,date a = {'na ...

  8. Nginx 高级配置-https 功能

    Nginx 高级配置-https 功能 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.HTTPS工作过程 1>.SSL/TLS SSL(Secure Socket Lay ...

  9. python数据类型之三

    字典 字典的基本结构 # 字典, 键值对 dict类# 字典的基本结构# 字典的值可以是任何值# 字典的键不能是列表,字典, 最好也不要用布尔值(可能会和1和0重复)# 字典无序, my_dict = ...

  10. Spring中@Autowired、@Resource和@Inject注解的使用和区别

    在使用Spring进行项目开发的时候,会大量使用到自动装配,那自动装配是什么呢?简单来说:Spring 利用依赖注入(DI)功能,完成SpringIOC容器中各个组件之间的依赖关系赋值管理. 下面介绍 ...