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刷题的时候想 ...
随机推荐
- 面象对象设计原则之一:单一职责原则(Single Responsibility Principle, SRP)
单一职责原则是最简单的面向对象设计原则,它用于控制类的粒度大小.单一职责原则定义如下:单一职责原则(Single Responsibility Principle, SRP):一个类只负责一个功能领域 ...
- 转载:必须收藏!50个最流行的免费Kubernetes工具集
必须收藏!50个最流行的免费Kubernetes工具集 http://cloud.51cto.com/art/201806/576406.htm 在短短的两年时间里,Kubernetes在容器编排的竞 ...
- GS使用HTTPS登录的设置过程
1. Windows 增加角色服务 服务器配置管理器, 添加角色服务 增加角色功能里面有: 证书颁发机构 证书颁发机构 web注册 2. AD CS配置 主要是next操作 独立ca 根证书 等 3. ...
- SQLSERVER安装
sql server 2008 代理服务提供的凭据无效 sql server 2008 代理服务提供的凭据无效 在Windows Server 2008安装SQL Server 2008出现的问题: ...
- hive数据类型
- pandas设置值、更改值
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/5/24 15:03 # @Author : zhang chao # @Fi ...
- 沉迷Link-Cut tree无法自拔之:[BZOJ2049]洞穴勘探(蒟蒻的LCT板子)
来自蒟蒻 \(Hero \_of \_Someone\) 的 \(LCT\) 学习笔记 最近学了一波 \(LCT\) , 于是怒刷 \(LCT\) 合集...... $ $ 学的时候借鉴了 Clove ...
- 【BZOJ2425】[HAOI2010]计数(组合数学)
[BZOJ2425][HAOI2010]计数(组合数学) 题面 BZOJ 洛谷 题解 很容易的一道题目. 统计一下每个数位出现的次数,然后从前往后依次枚举每一位,表示前面都已经卡在了范围内,从这一位开 ...
- 【转】用emWin进度条控件做个表盘控件,效果不错
@2018-08-09 用emWin进度条控件做个表盘控件,效果不错
- numpy random
np.random.seed()用法: np.random.seed(5) print(np.random.permutation(np.array([i for i in range(9)]))) ...