ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: muou8

[求助] 与非或逻辑组合匹配

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-1-18 15:50 | 显示全部楼层
本帖最后由 duquancai 于 2019-1-18 16:07 编辑
muou8 发表于 2019-1-18 14:55
老师 ,您理解错了。其实这个表的目的就是统计表二中的姓名的选项,是否满足表一中的逻辑组合,然后形成 ...

输出答案如下:

{'张三': {1, 2, 3, 4, 6}}
{'李四': {1, 2, 3, 5, 6}}
{'网二': {1, 2, 3, 4, 6, 7}}
{'嘻嘻': {2, 3, 5}}
{'阿达': {1, 2, 5, 6}}
  1. # -*- coding: utf-8 -*-
  2. # version: Python 3.7.0

  3. a = {
  4.     '张三': ['A', 'B', 'C', None],
  5.     '李四': ['A', 'B', None, None],
  6.     '网二': ['A', 'B', 'C', 'D'],
  7.     '嘻嘻': [None, 'B', None, None],
  8.     '阿达': ['A', None, None, 'D']
  9.    }

  10. for k in a:
  11.     c = set()
  12.     if a[k][0]:
  13.         c.add(1)
  14.     if a[k][0] or a[k][1]:
  15.         c.add(2)
  16.     if (not a[k][0]) or a[k][1]:
  17.         c.add(3)
  18.     if a[k][0] and a[k][1] and a[k][2]:
  19.         c.add(4)
  20.     if not (a[k][0] and a[k][1] and a[k][2]):
  21.         c.add(5)
  22.     if (a[k][0] and a[k][1]) or a[k][3]:
  23.         c.add(6)
  24.     if a[k][0] and a[k][1] and a[k][2] and a[k][3]:
  25.         c.add(7)
  26.     b = {k: c}
  27.     print(b)
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-18 16:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
一把小刀闯天下 发表于 2019-1-18 15:46
'逻辑没法看,按中文逻辑你的示例也有问题,,,

Option Explicit

谢谢老师,我的逻辑和输出结果确实有问题。

辛苦了老师。

不过代码没法用在应用上,您是事先已经知道这么几种逻辑关系,假如数据很多,这样就没办法一个一个去辨别组合的逻辑了

不过也辛苦了老师

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-18 16:08 | 显示全部楼层
duquancai 发表于 2019-1-18 15:50
输出答案如下:

{'张三': {1, 2, 3, 4, 6}}

老师 ,这是 python 代码吗?不过中间的代码逻辑我是看清楚了。
但是,这样还是无法用在应用上,如果表一数据很多,没法自己去辨别组合模式,在根据组合模式去编写相应的数据。
中间还是缺一个算法,怎么将组合逻辑,翻译成   A,B,C,D存在不存在的问题

不过,老师辛苦了,万分感谢。

TA的精华主题

TA的得分主题

发表于 2019-1-18 16:17 | 显示全部楼层
muou8 发表于 2019-1-18 16:04
谢谢老师,我的逻辑和输出结果确实有问题。

辛苦了老师。

这跟数据量多少无关,如果规则非常多可以定义一个数组来循环处理。自己可以修改一下逻辑表达式。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-18 16:21 | 显示全部楼层
一把小刀闯天下 发表于 2019-1-18 16:17
这跟数据量多少无关,如果规则非常多可以定义一个数组来循环处理。自己可以修改一下逻辑表达式。

老师,我的意思是:
表一的组合逻辑关系 使我们自己判断出来的,然后翻译成 VBA语言。
假如表一的组合逻辑关系有很多组合,我们在一一辨别就没有语言设计的初衷了。
现在就是缺少一个算法, 将 表一里面的组合逻辑翻译成  选项  A,B,C,D是否存在。

TA的精华主题

TA的得分主题

发表于 2019-1-18 16:24 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
muou8 发表于 2019-1-18 16:08
老师 ,这是 python 代码吗?不过中间的代码逻辑我是看清楚了。
但是,这样还是无法用在应用上,如果表 ...

你看清楚了!!!不要妄下结论:“无法用在应用上”

TA的精华主题

TA的得分主题

发表于 2019-1-18 16:27 | 显示全部楼层
表一中的逻辑符号表达的意思并不唯一,你按文字说明自己去理解一下,所以我按文字说明来写的

||  或者  or   
and  或者 &&
not  或者 !

我能看到的就3种逻辑,你可以使用这些逻辑去表达,,,

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-18 16:41 | 显示全部楼层
duquancai 发表于 2019-1-18 16:24
你看清楚了!!!不要妄下结论:“无法用在应用上”

不好意思,老师,可能我没表达清楚。
不要生气,总之谢谢老师的辛苦。

TA的精华主题

TA的得分主题

发表于 2019-1-18 16:51 | 显示全部楼层
muou8 发表于 2019-1-18 16:41
不好意思,老师,可能我没表达清楚。
不要生气,总之谢谢老师的辛苦。

看看这样能不能 运用(自己修改就行了!!!!)
QQ截图20190118165035.png

TA的精华主题

TA的得分主题

发表于 2019-1-18 17:37 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
muou8 发表于 2019-1-18 16:21
老师,我的意思是:
表一的组合逻辑关系 使我们自己判断出来的,然后翻译成 VBA语言。
假如表一的组合 ...

他们都是解决了你一楼举例的特定问题。

无法得到一个通用的算法。

即,自动翻译第1表的逻辑关系,(会有很多很多种不同的组合)
然后,计算第2表的实际逻辑状态,对应的逻辑关系是否成立。

…………
我考虑了一下,确实比较麻烦。
第一步,要对表1的逻辑关系理出一个一个的计算式子,这个还不算太难。
第二步,需要对逻辑关系计算式进行优先度顺序的检查、然后才是计算各种逻辑关系。
最后的逻辑计算,需要引用第2表的实际逻辑状态。
优先级
基本逻辑代号
实际逻辑关系
计算
0
()
分组
()
1
&
And
*
2
/
Or
+
3
A
True/False
1/0
4
!
Not
<>



逻辑代号逻辑组合说明计算式
1
AA=A
2
A/BA Or B=A+B
3
-A/BNot A or B=(!A)+B
4
A&B&CA And B And C=(A*B)*C
5
-(A&B&C)NoT (A And B And C)=!((A*B)*C)
6
(A/B)&D(A Or B) And D=(A+B)*D
7
A&B&C&DA And B And C And D=A*B*C*D

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-20 04:47 , Processed in 0.037840 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表