[英]Python variables automatically created [duplicate]
这个问题已经在这里有了答案:
该程序为指定的字符串返回一个真理表。 我想从控制台读取字符串,但我不知道如何创建变量。 我尝试了(几乎)一切,但是没有用。 请帮我。 对不起我的英语不好。
from itertools import izip, product, tee
# Logic functions: take and return iterators of truth values
def AND(a, b):
for p, q in izip(a, b):
yield p and q
def OR(a, b):
for p, q in izip(a, b):
yield p or q
def NOT(a):
for p in a:
yield not p
def EQUIV(a, b):
for p, q in izip(a, b):
yield p is q
def IMPLIES(a, b):
for p, q in izip(a, b):
yield (not p) or q
def XOR(a,b):
for p,q in izip(a,b):
yield (p and (not q)) or ((not p) and q)
def create(num=2):
#''' Returns a list of all of the possible combinations of truth for the
given number of variables.
#ex. [(T, T), (T, F), (F, T), (F, F)] for two variables '''
return list(product([True, False], repeat=num))
def unpack(data):
#''' Regroups the list returned by create() by variable, making it suitable
for use in the logic functions.
#ex. [(T, T, F, F), (T, F, T, F)] for two variables '''
return [[elem[i] for elem in lst] for i, lst in enumerate(tee(data,
len(data[0])))]
def print_result(data, result):
''' Prints the combinations returned by create() and the results returned
by the logic functions in a nice format. '''
n = len(data[0])
headers = 'abcdefghijklmnopqrstuvwxyz'[:n]
print headers + "|RESULT"
print '-' * len(headers) + '+------'
for row, result_cell in izip(data, result):
print ''.join({True: 'T', False:'F'}[cell] for cell in row) + '|' +
' ' + {True: 'T', False:'F'}[result_cell]
if __name__ == '__main__':
data = create(num = 2)
a,b = unpack(data)
result = IMPLIES(a,b)
print_result(data, result)
我以前遇到过这个问题,答案是使用字典。 这基本上是您需要的
var_dict = {}
my_list = ['a', 'b', 'c', 'd']
for each in my_list:
#Create a new dictionary key if it the current iteration doesn't already exist
if each not in var_dict.keys():
var_dict[each] = <THE VALUE YOU WISH TO SET THE VARIABLE TO>
else:
pass
#Or do something if the variable is already created
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.