python -- 算法
给定四个数字,找出不重复的排列组合可能
# 黑魔法方法,还纳闷 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 -- 算法的更多相关文章
- 安装Python算法库
安装Python算法库 主要包括用NumPy和SciPy来处理数据,用Matplotlib来实现数据可视化.为了适应处理大规模数据的需求,python在此基础上开发了Scikit-Learn机器学习算 ...
- python算法(一)
python算法(一) 一.求数x的因子 x=100 divisors=()#初始化空的元组 for i in range(1,x): if x%i==0: divisors=divisors+(i, ...
- Python算法与数据结构--求所有子数组的和的最大值
Python算法与数据结构--求所有子数组的和的最大值 玄魂工作室-玄魂 玄魂工作室秘书 玄魂工作室 昨天 题目:输入一个整形数组,数组里有正数也有负数.数组中连续的一个或多个整数组成一个子数组,每个 ...
- Python算法:推导、递归和规约
Python算法:推导.递归和规约 注:本节中我给定下面三个重要词汇的中文翻译分别是:Induction(推导).Recursion(递归)和Reduction(规约) 本节主要介绍算法设计的三个核心 ...
- Python算法(含源代码下载)
关键字:Python Algorithms Python算法 Mastering Basic Algorithms in the Python Language 使用Python语言掌握基本算法 P ...
- python算法题 python123网站单元四题目
目录 一:二分法求平方根 二:Collatz猜想 三:算24(只考虑满足,不考虑把所有情况找出来) 下面向大家介绍几个python算法题. 一:二分法求平方根 1.题目要求为 2.输入输出格式为 ...
- python算法介绍:希尔排序
python作为一种新的语言,在很多功能自然要比Java要好一些,也容易让人接受,而且不管您是成年人还是少儿都可以学习这个语言,今天就为大家来分享一个python算法教程之希尔排序,现在我们就来看看吧 ...
- Java && Python 算法面试常用类以及方法总结
数据结构 逻辑结构上: 包括集合,线性结构,非线性结构. 存储结构: 顺序存储,链式存储,索引存储,散列存储. Java 常见数据结构 大专栏 Java && Python 算法面试 ...
- GitHub标星2.6万!Python算法新手入门大全
今天推荐一个Python学习的干货. 几个印度小哥,在GitHub上建了一个各种Python算法的新手入门大全,现在标星已经超过2.6万.这个项目主要包括两部分内容:一是各种算法的基本原理讲解,二是各 ...
- python算法常用技巧与内置库
python算法常用技巧与内置库 近些年随着python的越来越火,python也渐渐成为了很多程序员的喜爱.许多程序员已经开始使用python作为第一语言来刷题. 最近我在用python刷题的时候想 ...
随机推荐
- Java WebDriver 使用经验
0x00 背景 WebDriver作为Selenium项目的工具之一,可以高效的操作各类主流浏览器包括诸如:chrome.IE.Firefox.Safari,并同时支持windows和*nux系统.W ...
- Docker-Compose 安装
1. 什么是Docker-Compose Compose项目来源于之前的fig项目,使用python语言编写,与docker/swarm配合度很高. Compose 是 Docker 容器进行编排的工 ...
- CentOs7 使用iptables防火墙开启关闭端口
CentOs7 使用iptables防火墙开启关闭端口 # 0x01介绍 iptables命令是Linux上常用的防火墙软件,是netfilter项目的一部分iptables文件设置路径:命令:v ...
- [转帖] 读懂YML文件.. 书买了还没看完...
Copy From https://www.cnblogs.com/CloudMan6/p/8370501.html 读懂 Deployment YAML - 每天5分钟玩转 Docker 容器技 ...
- python常用命令和基础运算符
基础运算符 http://www.cnblogs.com/alex3714/articles/5465198.html 身份运算符:is is not成员运算符:in not in ##in 判断元素 ...
- MyBatis:传参
MyBatis从入门到放弃二:传参 前言 我们在mapper.xml写sql,如果都是一个参数,则直接配置parameterType,那实际业务开发过程中多个参数如何处理呢? 从MyBatis API ...
- 解析 Android Things 技术原理
2012 年 6 月,由 IoT-GSI(Global Standards Initiative on Internet of Things)发布的白皮书“ITU-T Y.4000/Y.2060”[1 ...
- 自学Zabbix3.10.2-事件通知Notifications upon events-Actions报警配置
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix3.10.2-事件通知Notifications upon events-Acti ...
- ubuntu 14.04下使用fcitx时将caps lock映射为ctrl
在~/.xprofile中加入 setxkbmap -option caps:ctrl_modifier 要弄成全局的就在 /etc/X11/Xsession.d/ 里面找个文件塞进去. archli ...
- 调用系统命令之subprocess模块
除了常见的os.system和os.popen方法,官方强烈推荐使用subprocess来调用系统命令. 这个库用起来其实很简单,按照惯例先贴一下官文关键点: The subprocess modul ...