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


# 黑魔法方法,还纳闷 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. [转帖]浅析Servlet执行原理

    浅析Servlet执行原理 原贴地址: https://www.cnblogs.com/wangjiming/p/10360327.html 原作者画的图挺好. 自己之前看过iis的一些配置文档 但是 ...

  2. linux_查看磁盘与目录容量

    一.查看磁盘容量命令df(report file system disk space usage) 终端运行 $ df 输出结果 我的物理主机上的 /dev/sda5 是对应着主机硬盘的分区,字母 a ...

  3. github使用指南(2015年3月23日更新了本地创建仓库再推送到remote仓库的使用方法)

    我是通过这个来学习的.个人愚笨,琢磨了半天,终于搞通了,醉了醉了,以前一直使用svn,用git确实有点水土不服.本文以如何使用git为主来展开,不涉及太多理论. git是分布式的版本管理.什么叫分布式 ...

  4. MySQL在Read Uncommitted级别下写操作加X锁

    很多文章认为MySQL在读未提交(Read Uncommitted)的隔离级别下,写操作是不加锁的,然而实际上并不是,在RU级别下,写操作加有X锁. 实践出真知 以前,我也认为RU隔离级别下,写操作不 ...

  5. Word2010设置题注和交叉引用方法

    设置题注 点击图片-->右键-->插入题注-->新建标签:“图”-->选择新建标签“图”-->修改“编号”-->勾选包含章节号-->设置章节起始样式:标题2- ...

  6. Lodop设置文本项行间距、字间距

    LODOP给文本项ADD_PRINT_TEXT设置字间距.行间距,可以在打印设计页面,右键属性里设置,然后在打印设计生成代码,也可以直接写代码.LineSpacing行间距.LetterSpacing ...

  7. 近端梯度算法(Proximal Gradient Descent)

    L1正则化是一种常用的获取稀疏解的手段,同时L1范数也是L0范数的松弛范数.求解L1正则化问题最常用的手段就是通过加速近端梯度算法来实现的. 考虑一个这样的问题: minx  f(x)+λg(x) x ...

  8. Scala常用命令

    :q    退出控制台 控制台换行    空格 + 回车

  9. AISing Programming Contest 2019 翻车记

    A:签到. #include<iostream> #include<cstdio> #include<cstdlib> #include<cmath> ...

  10. HDU-3746-KMP理解失配

    这个有点意思,要理解失配数组 题意是要计算出需要构造成循环节相连的最小个数 利用失配构造函数求出单个循环节,然后计算出需要的加上的珠子个数 #include <cstdio> #inclu ...