首页 > 代码库 > 将析取范式转化为主析取范式
将析取范式转化为主析取范式
1 #coding=utf-8 2 3 my_input = ‘‘ #输入命题 4 all_letters=[] #所有字母 5 xiqu_result=[] #主析取结果 6 7 def getInput(): #从键盘获取输入 8 global my_input 9 print u‘\n 请输入任意一个命题,规则如下:‘10 print u" 1.‘~‘表示非"11 print u" 2.‘&‘表示合取"12 print u" 3.‘|‘表示析取 "13 print u" 7.可以使用括号‘()‘"14 print u" 8.优先级为‘()‘-->‘~‘-->‘&‘-->‘|‘"15 print u‘ o((>ω< ))o\n‘16 my_input=raw_input(‘ ‘)17 18 def check(): #判断是否存在非法字符和查找所有字符并排序19 global my_input,all_letters20 all_letters=[]21 for c in my_input:22 if c>=‘A‘and c<=‘Z‘ or c>=‘a‘ and c<=‘z‘:23 if c not in all_letters:24 all_letters.append(c)25 elif c not in [‘~‘,‘&‘,‘|‘,‘(‘,‘)‘]:26 print u‘\n ( ̄ε(# ̄)☆╰╮( ̄▽ ̄///)\n‘ #存在非法字符返回警告27 print u‘ 非法字符知道吗, o(* ̄▽ ̄*)o \n‘28 return 029 all_letters = sorted(all_letters) # 字母按字典序排列30 return 131 32 def getValueSheet(): #获取真值表33 global my_input,all_letters,xiqu_result34 letter_len = len(all_letters) #所有的字母个数35 all_values = 2**letter_len #产生的真值表的行数36 37 38 #判断是否存在非法命题,或者错误语法39 check_string = my_input40 for k in range(0,letter_len):41 check_string = check_string.replace(all_letters[k],‘0‘)42 try:43 result = eval(check_string) & 144 except Exception,e:45 return 046 47 48 print u‘\n真值表如图 \( ̄︶ ̄*\))\n‘49 print list(map(str,all_letters)),u‘ 值‘50 for i in range(0,all_values):51 j=i52 value =http://www.mamicode.com/ []53 for k in range(0,letter_len):54 value.append(0)55 k=056 while j>0:57 value[k]=j%258 j = j/259 k +=160 value.reverse()61 this_parse = my_input62 for k in range(0,letter_len):63 this_parse = this_parse.replace(all_letters[k],str(value[k]))64 result = eval(this_parse) & 165 print list(map(str,value)),‘ ‘,result66 if result ==1:67 xiqu_result.append(i)68 return 169 70 def printAll(): #打印命题公式,输出结果71 print u‘\n<-------------分割线------------>\n‘72 print u‘主析取范式为:‘73 print u‘∑‘,xiqu_result74 print u‘\nヽ(* ̄▽ ̄)ノ┻W┫‘75 76 def main():77 getInput()78 while check()!=1: #如果命题不合法,重新输入79 getInput()80 while getValueSheet()!=1: #如果语法错误,重新输入81 print u‘\n哼哼,你命题公式不正确,检查一下吧\n‘82 printAll()83 getInput()84 while check()!=1:85 getInput()86 printAll()87 88 main()89
将析取范式转化为主析取范式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。