Python算法输出1-9数组形成的结果为100的所有运算式


Posted in Python onNovember 03, 2017

问题:

编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。例如:1 + 2 + 34?5 + 67?8 + 9 = 100。

from functools import reduce
operator = {
 1: '+',
 2: '-',
 0: ''
}
base = ['1', '2', '3', '4', '5', '6', '7', '8', '9']
def isHundred(num):
 #转化为8位3进制数,得到运算符数组
 arr = []
 for index in range(8):
  index = 7 - index
  arr.append(num // (3 ** index))
  num -= (num // (3 ** index)) * (3 ** index)
 arr = map(lambda x: operator[x], arr)
 #合并得到运算式
 formula = reduce(lambda x, y: x + y, zip(base, arr))
 formula = list(formula)
 formula.append('9')
 formula = ''.join(formula)
 #计算运算式结果
 res = eval(formula)
 return res, formula
if __name__ == '__main__':
 #所有可能的结果
 total = 3 ** 8
 for i in range(total):
  res, formula = isHundred(i)
  if res == 100:
   print(formula+' = 100')

结果:

/usr/bin/python3.5 /home/kang/workspace/Qt3d/test.py
123+45-67+8-9 = 100
123+4-5+67-89 = 100
123-45-67+89 = 100
123-4-5-6-7+8-9 = 100
12+3+4+5-6-7+89 = 100
12+3-4+5+67+8+9 = 100
12-3-4+5-6+7+89 = 100
1+23-4+56+7+8+9 = 100
1+23-4+5+6+78-9 = 100
1+2+34-5+67-8+9 = 100
1+2+3-4+5+6+78+9 = 100

下面再看一个小实例:

题目:输入三个整数x,y,z,请把这三个数由小到大输出。

程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。

程序源代码:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
l = []
for i in range(3):
 x = int(raw_input('integer:\n'))
 l.append(x)
l.sort()
print l

以上实例输出结果为:

integer:
8
integer:
5
integer:
6
[5, 6, 8]

总结

以上就是小编分享给大家的有关Python的实例,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:Python定时器实例代码、Python生成数字图片代码分享、Python中enumerate函数代码解析等,有什么问题可以随时留言,小编会及时回复大家的。

Python 相关文章推荐
Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
Sep 06 Python
Python中列表(list)操作方法汇总
Aug 18 Python
Python简单实现TCP包发送十六进制数据的方法
Apr 16 Python
python读取oracle函数返回值
Jul 18 Python
python中pika模块问题的深入探究
Oct 13 Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
Apr 04 Python
pyqt5 使用label控件实时显示时间的实例
Jun 14 Python
利用Python实现手机短信监控通知的方法
Jul 22 Python
python实现各种插值法(数值分析)
Jul 30 Python
Python实现图片批量加入水印代码实例
Nov 30 Python
python匿名函数lambda原理及实例解析
Feb 07 Python
Python使用pyexecjs代码案例解析
Jul 13 Python
django定期执行任务(实例讲解)
Nov 03 #Python
python嵌套字典比较值与取值的实现示例
Nov 03 #Python
基于Python os模块常用命令介绍
Nov 03 #Python
django实现同一个ip十分钟内只能注册一次的实例
Nov 03 #Python
Python实现1-9数组形成的结果为100的所有运算式的示例
Nov 03 #Python
python使用PyCharm进行远程开发和调试
Nov 02 #Python
python中文分词教程之前向最大正向匹配算法详解
Nov 02 #Python
You might like
WIN98下Apache1.3.14+PHP4.0.4的安装
2006/10/09 PHP
ThinkPHP3.1的Widget新用法
2014/06/19 PHP
PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子
2014/07/04 PHP
php 算法之实现相对路径的实例
2017/10/17 PHP
PHP排序二叉树基本功能实现方法示例
2018/05/26 PHP
再说AutoComplete自动补全之实现原理
2011/11/05 Javascript
ExtJS判断IE浏览器类型的方法
2014/02/10 Javascript
JS绘制生成花瓣效果的方法
2015/08/05 Javascript
基于jQuery实现顶部导航栏功能
2016/12/27 Javascript
jQuery实现手势解锁密码特效
2017/08/14 jQuery
在vue项目创建的后初始化首次使用stylus安装方法分享
2018/01/25 Javascript
Vue项目全局配置微信分享思路详解
2018/05/04 Javascript
vue3.0 CLI - 2.2 - 组件 home.vue 的初步改造
2018/09/14 Javascript
Angular封装搜索框组件操作示例
2019/04/25 Javascript
javascript的惯性运动实现代码实例
2019/09/07 Javascript
Vue.set 全局操作简单示例
2019/09/19 Javascript
解决VUE-Router 同一页面第二次进入不刷新的问题
2020/07/22 Javascript
[02:39]我与DAC之Newbee.Moogy:从论坛到TI
2018/03/26 DOTA
[46:20]TFT vs Secret Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[45:15]Optic vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
python刷投票的脚本实现代码
2014/11/08 Python
详解Python中的正则表达式的用法
2015/04/09 Python
Django应用程序中如何发送电子邮件详解
2017/02/04 Python
Python实现扩展内置类型的方法分析
2017/10/16 Python
python实现监控某个服务 服务崩溃即发送邮件报告
2018/06/21 Python
python  创建一个保留重复值的列表的补码
2018/10/15 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
2019/02/08 Python
使用celery执行Django串行异步任务的方法步骤
2019/06/06 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
2019/08/23 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
2020/05/27 Python
Python将list元素转存为CSV文件的实现
2020/11/16 Python
HTML5之SVG 2D入门3—文本与图像及渲染文本介绍
2013/01/30 HTML / CSS
Kivari官网:在线购买波西米亚服装
2018/10/29 全球购物
奥巴马经典演讲稿
2014/09/13 职场文书
Python 多线程处理任务实例
2021/11/07 Python
利用Redis实现点赞功能的示例代码
2022/06/28 Redis