我试图解决USACO培训中的一个测试用例:“你的车在这里”。我尝试分配字母表中的数字值,并将字符串中的每个字符相乘,得到一个乘积。你知道吗
示例:
C O M E T Q
3 * 15 * 13 * 5 * 20 * 17 = 994500
不幸的是,产品总是乱七八糟。你知道吗
key = {
'A':1,
'B':2,
'C':3,
'D':4,
'E':5,
'F':6,
'G':7,
'H':8,
'I':8,
'J':10,
'K':11,
'L':12,
'M':13,
'N':14,
'O':15,
'P':16,
'Q':17,
'R':18,
'S':19,
'T':20,
'U':21,
'V':22,
'W':23,
'X':24,
'Y':25,
'Z':26
}
file = open("testdata.txt", "r")
message = file.readline(2)
for character in message:
preSignal = key[character]
s = preSignal*key[character]
print(s)
问题与解决方案
您的问题是,您实际上是在覆盖循环的每次迭代
s
的值。您需要创建一个变量来保存每次迭代的当前结果的值,并将其添加到该变量中改进
您可以简化字母到数字的映射:
或者可以使用
string.ascii_letters
:每次都重写变量
s
,并将平方key[character]
保存到它(这是不对的)。您需要创建一个变量来保存结果。试试这个:您需要在相乘之前将答案保存到s,这样您的代码将是:
相关问题 更多 >
编程相关推荐