给定四个数字,找出不重复的排列组合可能


# 黑魔法方法,还纳闷 lambda 不能 yield 其实把 [] 改为小括号即是生成器啦 func = lambda num_tuple:((i,j,k,n) for n in num_tuple for k in num_tuple for j in num_tuple for i in num_tuple
if i!=j and i!=k and i!=n and j!=k and j!=n and k!=n )
for n in func((1,2,3,4)):
print(n) >>> num = (1,2,3,4)
>>> def func(num_tuple):
... for i in num_tuple:
... for j in num_tuple:
... for k in num_tuple:
... for n in num_tuple:
... if i is not j and i is not k and i is not n and j is not k and j is not n and k is not n:
... yield int(i)*1000 + int(j)*100 + int(k)*10 + int(n)
...
>>> for n in func(num):
... print(n)
...
1234
1243
1324
1342
1423
1432
2134
2143
2314 ....省略....

# 要求: # 企业实行阶梯制销售绩效方案。现规定: # 销售额低于或等于10万时,提成10%; # 销售额低于或等于20万时,超过10万的部分提成7.5%,其他从上; # 销售额低于或等于40万时,超过20万的部分提成5%,其他从上; # 销售额低于或等于60万时,超过40万的部分提成3%,其他从上; # 销售额低于或等于100万时,超过60万的部分提成1.5%,其他从上; # 销售额高于100万元时,超过100万的部分提成1%,其他从上。 # 要求输入某人的销售额,得出应发绩效。 # 分析: # 1.利用数轴来分界,定位。 def switch(flag):
return {'lt10':0.1,'10_20':0.075,'20_40':0.05,'40_60':0.03,'60_100':0.015,'gt100':0.01}.get(flag,0) def kpi_func(amount):
base_amt = (10**4)
bonus_1 = 10*base_amt*switch('lt10')
bonus_2 = bonus_1 + 10*base_amt*switch('10_20')
bonus_3 = bonus_2 + 20*base_amt*switch('20_40')
bonus_4 = bonus_3 + 20*base_amt*switch('40_60')
bonus_5 = bonus_4 + 40*base_amt*switch('60_100') if amount<=10*base_amt:
return amount*switch('lt10')
elif amount<=20*base_amt:
return bonus_1+(amount-10*base_amt)*switch('10_20')
elif amount<=40*base_amt:
return bonus_2 + (amount-20*base_amt)*switch('20_40')
elif amount<=60*base_amt:
return bonus_3 + (amount-40*base_amt)*switch('40_60')
elif amount<=100*base_amt:
return bonus_4 + (amount-60*base_amt)*switch('60_100')
else:
return bonus_5 + (amount-100*base_amt)*switch('gt100')
# 要求:

# 设有整数i,i+100是一个完全平方数,再加168又是一个完全平方数,求出该整数的值。

# 分析:

# 在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
>>> def is_square_totally(x):
... for i in range(1,x):
... if i**2 == x:
... return True
... return False >>> i=1
>>> while True:
... if is_square_totally(i+100) and is_square_totally(i+168):
... print(i)
... break
... i+=1
# 要求:

# 输入三个整数xyz,并将其按大小顺序输出。

# 分析:

# 慢一点的话,就是挨个比较大小,不过Python列表可以用sort函数,所以就方便多了。
i = input('请输入第一个数:')
j = input('请输入第一个数:')
k = input('请输入第一个数:')
l = []
l.append(int(i))
l.append(int(j))
l.append(int(k))
sorted(l,reverse=True)
# 一句话 python 打印 99 乘法表
print('\n'.join(['\t'.join(['{}*{}={}'.format(i,j,i*j) for j in range(1,i+1)]) for i in range(1,10,1)])) print ('\n'.join([' '.join(['%s*%s=%-2s' % (y,x,x*y) for y in range(1,x+1)]) for x in range(1,10)])) for i in range(1,10,1):
for j in range(1,i+1,1):
print('{}*{}={}\t'.format(i,j,i*j),end='')
print()
# 输出国际象棋棋盘
import sys
for i in range(8):
for j in range(8):
if(i + j) % 2 == 0:
sys.stdout.write(chr(219)+' ')
# sys.stdout.write(chr(219))
else:
sys.stdout.write(chr(1)+' ')
print('')
Û Û Û Û
Û Û Û Û
Û Û Û Û
Û Û Û Û
Û Û Û Û
Û Û Û Û
Û Û Û Û
Û Û Û Û
# 打印楼梯
for i in range(1,6,1):
print(' '*(6-i),end='')
print('#'*i) print('\n'.join(['\n'.join([' '*(6-i)+'#'*i]) for i in range(1,6,1)]))
# 水仙花数 , 某个数 个十百 等 每个位置上的 数字 3次幂 等于该数本身
print([ i for i in range(100,1000) if sum([pow(int(str(i)[k]),3) for k in range(3)]) == i ]) def func():
for n in range(100,1000):
i = n//100
j = n%100//10
k = n%10
if i**3+j**3+k**3 == n:
yield n
for n in func():
print(n)
# 1-100 质数
[n for n in range(1,100) if not [ m for m in range(2,n) if n%m == 0]]

python -- 算法的更多相关文章

  1. 安装Python算法库

    安装Python算法库 主要包括用NumPy和SciPy来处理数据,用Matplotlib来实现数据可视化.为了适应处理大规模数据的需求,python在此基础上开发了Scikit-Learn机器学习算 ...

  2. python算法(一)

    python算法(一) 一.求数x的因子 x=100 divisors=()#初始化空的元组 for i in range(1,x): if x%i==0: divisors=divisors+(i, ...

  3. Python算法与数据结构--求所有子数组的和的最大值

    Python算法与数据结构--求所有子数组的和的最大值 玄魂工作室-玄魂 玄魂工作室秘书 玄魂工作室 昨天 题目:输入一个整形数组,数组里有正数也有负数.数组中连续的一个或多个整数组成一个子数组,每个 ...

  4. Python算法:推导、递归和规约

    Python算法:推导.递归和规约 注:本节中我给定下面三个重要词汇的中文翻译分别是:Induction(推导).Recursion(递归)和Reduction(规约) 本节主要介绍算法设计的三个核心 ...

  5. Python算法(含源代码下载)

    关键字:Python Algorithms Python算法  Mastering Basic Algorithms in the Python Language 使用Python语言掌握基本算法 P ...

  6. python算法题 python123网站单元四题目

    目录 一:二分法求平方根 二:Collatz猜想 三:算24(只考虑满足,不考虑把所有情况找出来)   下面向大家介绍几个python算法题. 一:二分法求平方根 1.题目要求为 2.输入输出格式为 ...

  7. python算法介绍:希尔排序

    python作为一种新的语言,在很多功能自然要比Java要好一些,也容易让人接受,而且不管您是成年人还是少儿都可以学习这个语言,今天就为大家来分享一个python算法教程之希尔排序,现在我们就来看看吧 ...

  8. Java && Python 算法面试常用类以及方法总结

    数据结构 逻辑结构上: 包括集合,线性结构,非线性结构. 存储结构: 顺序存储,链式存储,索引存储,散列存储. Java 常见数据结构 大专栏  Java && Python 算法面试 ...

  9. GitHub标星2.6万!Python算法新手入门大全

    今天推荐一个Python学习的干货. 几个印度小哥,在GitHub上建了一个各种Python算法的新手入门大全,现在标星已经超过2.6万.这个项目主要包括两部分内容:一是各种算法的基本原理讲解,二是各 ...

  10. python算法常用技巧与内置库

    python算法常用技巧与内置库 近些年随着python的越来越火,python也渐渐成为了很多程序员的喜爱.许多程序员已经开始使用python作为第一语言来刷题. 最近我在用python刷题的时候想 ...

随机推荐

  1. Java WebDriver 使用经验

    0x00 背景 WebDriver作为Selenium项目的工具之一,可以高效的操作各类主流浏览器包括诸如:chrome.IE.Firefox.Safari,并同时支持windows和*nux系统.W ...

  2. Docker-Compose 安装

    1. 什么是Docker-Compose Compose项目来源于之前的fig项目,使用python语言编写,与docker/swarm配合度很高. Compose 是 Docker 容器进行编排的工 ...

  3. CentOs7 使用iptables防火墙开启关闭端口

    CentOs7 使用iptables防火墙开启关闭端口   # 0x01介绍 iptables命令是Linux上常用的防火墙软件,是netfilter项目的一部分iptables文件设置路径:命令:v ...

  4. [转帖] 读懂YML文件.. 书买了还没看完...

    Copy From https://www.cnblogs.com/CloudMan6/p/8370501.html   读懂 Deployment YAML - 每天5分钟玩转 Docker 容器技 ...

  5. python常用命令和基础运算符

    基础运算符 http://www.cnblogs.com/alex3714/articles/5465198.html 身份运算符:is is not成员运算符:in not in ##in 判断元素 ...

  6. MyBatis:传参

    MyBatis从入门到放弃二:传参 前言 我们在mapper.xml写sql,如果都是一个参数,则直接配置parameterType,那实际业务开发过程中多个参数如何处理呢? 从MyBatis API ...

  7. 解析 Android Things 技术原理

    2012 年 6 月,由 IoT-GSI(Global Standards Initiative on Internet of Things)发布的白皮书“ITU-T Y.4000/Y.2060”[1 ...

  8. 自学Zabbix3.10.2-事件通知Notifications upon events-Actions报警配置

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix3.10.2-事件通知Notifications upon events-Acti ...

  9. ubuntu 14.04下使用fcitx时将caps lock映射为ctrl

    在~/.xprofile中加入 setxkbmap -option caps:ctrl_modifier 要弄成全局的就在 /etc/X11/Xsession.d/ 里面找个文件塞进去. archli ...

  10. 调用系统命令之subprocess模块

    除了常见的os.system和os.popen方法,官方强烈推荐使用subprocess来调用系统命令. 这个库用起来其实很简单,按照惯例先贴一下官文关键点: The subprocess modul ...