Python【每日一问】28
问:
【基础题】:求 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的更多相关文章
- [python每日一练]--0012:敏感词过滤 type2
题目链接:https://github.com/Show-Me-the-Code/show-me-the-code代码github链接:https://github.com/wjsaya/python ...
- Python每日一练(1):计算文件夹内各个文章中出现次数最多的单词
#coding:utf-8 import os,re path = 'test' files = os.listdir(path) def count_word(words): dic = {} ma ...
- python每日一函数 - divmod数字处理函数
python每日一函数 - divmod数字处理函数 divmod(a,b)函数 中文说明: divmod(a,b)方法返回的是a//b(除法取整)以及a对b的余数 返回结果类型为tuple 参数: ...
- 每日一问:Android 消息机制,我有必要再讲一次!
坚持原创日更,短平快的 Android 进阶系列,敬请直接在微信公众号搜索:nanchen,直接关注并设为星标,精彩不容错过. 我 17 年的 面试系列,曾写过一篇名为:Android 面试(五):探 ...
- 每日一问:谈谈 volatile 关键字
这是 wanAndroid 每日一问中的一道题,下面我们来尝试解答一下. 讲讲并发专题 volatile,synchronize,CAS,happens before, lost wake up 为了 ...
- 每日一问:讲讲 Java 虚拟机的垃圾回收
昨天我们用比较精简的文字讲了 Java 虚拟机结构,没看过的可以直接从这里查看: 每日一问:你了解 Java 虚拟机结构么? 今天我们必须来看看 Java 虚拟机的垃圾回收算法是怎样的.不过在开始之前 ...
- 每日一问:你了解 Java 虚拟机结构么?
对于从事 C/C++ 程序员开发的小伙伴来说,在内存管理领域非常头疼,因为他们总是需要对每一个 new 操作去写配对的 delete/free 代码.而对于我们 Android 乃至 Java 程序员 ...
- 每日一问:LayoutParams 你知道多少?
前面的文章中着重讲解了 View 的测量流程.其中我提到了一句非常重要的话:View 的测量匡高是由父控件的 MeasureSpec 和 View 自身的 `LayoutParams 共同决定的.我们 ...
- 每日一问:简述 View 的绘制流程
Android 开发中经常需要用一些自定义 View 去满足产品和设计的脑洞,所以 View 的绘制流程至关重要.网上目前有非常多这方面的资料,但最好的方式还是直接跟着源码进行解读,每日一问系列一直追 ...
- python每日一练:0007题
第 0007 题: 有个目录,里面是你自己写过的程序,统计一下你写过多少行代码.包括空行和注释,但是要分别列出来. # -*- coding:utf-8 -*- import os def count ...
随机推荐
- eclipse对Java项目进行单元测试
一.右键项目名->buildpath->configure buildpath->add library->junit->选择版本(以4为例)->apply-> ...
- javascript getElementsByClassName扩展函数
代码: function getElementsByClassName(){ if(!arguments[0]){return []};//未指定任何参数,直接返回 var args=argument ...
- VMware + CentOS 7搭建环境(一)
1. 下载VMware Workstation约300MB(vmware12虚拟机软件)12.5.2 官方简体中文版:http://www.xiazaiba.com/html/27692.htmlVM ...
- Web API接口安全了解
2017版OWASP top 10 将API安全纳入其中,足以说明API被广泛使用且安全问题严重.自己尝试整理一下,但限于本人搬砖经验还不足.水平有限,本文只能算是抛砖引玉,希望大伙不吝赐教. 了解W ...
- MySQL数据库(七)--索引
一 .介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语 ...
- javascript之DOM(四其他类型)
一.Text类型 文本节点由Text类型表示,指的是可以以字面意思解释的纯文本内容,其中包含HTML代码. nodeType=3 nodeName=#text nodeValue=文本内容 paren ...
- node 淘宝镜像
永久使用 打开终端执行 npm config set registry https://registry.npm.taobao.org 临时使用 npm --registry https://regi ...
- Python并发编程内容回顾
Python并发编程内容回顾 并发编程小结 目录 • 一.到底什么是线程?什么是进程? • 二.Python多线程情况下: • 三.Python多进程的情况下: • 四.为什么有这把GIL锁? • 五 ...
- android 代码里设置控件属性
设置字体大小: setTextSize(TypedValue.COMPLEX_UNIT_PX,22); //22像素 setTextSize(TypedValue.COMPLEX_UNIT_SP,22 ...
- windows命令行模式打开目录
cmd命令行里面,打开当前目录方式如下: explorer .