考虑方程ABCBA = D * BE * BFFA。任务是确定哪个是不同数字的A,B,C,D,E和F.具有数值的等式是91819 = 7 * 13 * 1009,因此程序应该打印{' A'' B':' C' :8,' D':7,' E':3,' F':0}。 这是我做的代码
result=[]
for A in range (10):
for B in range(10):
for C in range(10):
for D in range(10):
for E in range(10):
for F in range(10):
if int(str(A)+str(B)+str(C)+str(B)+str(A)) == D * int(str(B)+str(E)) * int(str(B)+str(F)+str(F)+str(A)):
result.append({'A':A,'B':B,'C':C,'D':D,'E':E,'F':F})
print((result[len(result)-1]))
现在它适用于示例中的等式。如何修改我的代码,以便它适用于任何由用户输入的等式?
答案 0 :(得分:0)
如果您只需要上一次输出并想要丢弃其他所有内容,则可以一遍又一遍地覆盖同一个变量:
result = {}
for B in range(10):
for C in range(10):
for D in range(10):
for E in range(10):
for F in range(10):
if int(str(A)+str(B)+str(C)+str(B)+str(A)) == D * int(str(B)+str(E)) * int(str(B)+str(F)+str(F)+str(A)):
result = {'A':A,'B':B,'C':C,'D':D,'E':E,'F':F}
pprint(result)
如果您想保留所有结果但只打印最后一个结果,请使用列表:
result = []
for B in range(10):
for C in range(10):
for D in range(10):
for E in range(10):
for F in range(10):
if int(str(A)+str(B)+str(C)+str(B)+str(A)) == D * int(str(B)+str(E)) * int(str(B)+str(F)+str(F)+str(A)):
result.append({'A':A,'B':B,'C':C,'D':D,'E':E,'F':F})
pprint(result[-1])
答案 1 :(得分:0)
我认为@Khris的答案是100%正确的,因为你需要A
的循环,并且你的原始问题列出了任何数字的第一个数字不能为0;因此A
,B
和D
不能为0,因此为此添加了if A and D and B:
。
然后导致(打印所有结果,你可以从那里选择):
from pprint import pprint
results = []
for A in range(10):
for B in range(10):
for C in range(10):
for D in range(10):
for E in range(10):
for F in range(10):
if A and D and B:
if int(str(A)+str(B)+str(C)+str(B)+str(A)) == D * int(str(B)+str(E)) * int(str(B)+str(F)+str(F)+str(A)):
results.append({'A':A,'B':B,'C':C,'D':D,'E':E,'F':F})
for result in results:
pprint(result)
您进一步说明以下内容:
pprint的许多输出中的最后一个给出了正确的结果。可以 有人编辑它只打印最后(正确)的结果吗?
根据等式ABCBA = D * BE * BFFA
,这是不正确的:以下结果都是有效的:
{'A': 1, 'B': 1, 'C': 0, 'D': 1, 'E': 1, 'F': 0} # 11011 = 1 * 11 * 1001
{'A': 2, 'B': 1, 'C': 3, 'D': 1, 'E': 6, 'F': 3} # 21312 = 1 * 16 * 1332
{'A': 2, 'B': 1, 'C': 9, 'D': 1, 'E': 1, 'F': 9} # 21912 = 1 * 11 * 1992
{'A': 5, 'B': 1, 'C': 3, 'D': 3, 'E': 1, 'F': 5} # 51315 = 3 * 11 * 1555
{'A': 9, 'B': 1, 'C': 8, 'D': 7, 'E': 3, 'F': 0} # 91819 = 7 * 13 * 1009