这是新手问题。我正在研究一种完全基于Python的sagemath。
我的代码分为两部分: 第一部分是:
var('a,b')
my_list=list(powerset([a,b]))
my_possible_products_list=[]
for i in my_list:
if len(i)!=0:
my_possible_products_list.append(prod(i))
print my_possible_products_list
带有输出
[a, b, a*b]
,结果是一组两个变量上所有可能的产品表达式的列表。
第二部分:
for expression_compute in my_possible_products_list:
for l in range(1,3):
for a in divisors(l):
for b in divisors(l):
print expression_compute
带输出
a
a
a
a
a
b
b
b
b
b
a*b
a*b
a*b
a*b
a*b
问题:我需要输出数字,而不是使用a和b,而是使用a和b的值作为给定l的除数。
任何提示?
感谢。
答案 0 :(得分:1)
我不确定我是否理解这里的问题,但根据我的理解,您将表达式作为字符串并想要计算值。对于a和b作为单个实体,它很容易,只需转换为整数
a = "5"
print(int(a) + 1) # Will print 6
对于你可以做的产品表达,因为@iForest建议使用 eval(),但他说这是邪恶的。我会使用拆分方法
expr = "3*5"
terms = expr.split('*')
print(int(terms[0]) * int(terms[1])) # Will print 15
希望这有帮助,否则我需要更多解释你的问题
== @iForest评论==
后更新如果变量名称为需要的字符串,请使用locals()
a = 3
b = 5
variables = locals()
expr = "a*b"
terms = expr.split('*')
print(variables[terms[0]] * variables[terms[1]]) # Output 15
只要您不需要更新变量,就会有效
答案 1 :(得分:0)