我正在用 Python 解决一个问题。当你输入 时3, aba caba, aba daba, baa cdaa,它会报错。
我找不到我的错误的原因。如果您有帮助,我将不胜感激!
这是任务:
亚历山大在太空港的海关工作。有一天,一艘宇宙飞船在完成火星探险后抵达那里。港口的扫描仪已经拉响警报;船上确实有一个火星人,他伪装成船员。不幸的是,扫描仪无法显示谁到底是火星人。
然后亚历山大决定为所有船员申请一个通信协议。众所周知,在真实船员的语言中,每个角色出现的概率取决于前一个角色。然而,火星人不知道这一点,并试图模仿真正船员的语言,选择字母而不顾以前的字母。
帮助亚历山大确定哪些船员实际上是火星人。保证这可以用现有的通信协议来完成。
输入格式
第一行包含一个自然数N (3 ≤ N ≤ 10)——船上船员的数量(包括伪装的火星人)。
以下N几行包含相关机组人员的声明文本。每行仅由小拉丁字母和空格组成。所有线的长度总和不超过104。输出格式 打印一个自然数——伪装火星人的陈述文本对应的行号。
实施例1
输入数据:
3
aba caba
aba daba
baa cdaa
输出:
3
这是我的代码:
def find_martian_crew_member():
N = int(input())
crew_statements = []
# Чтение высказываний экипажа
for _ in range(N):
statement = input()
crew_statements.append(statement)
# Создание списка вероятностей для символов
char_probabilities = [0] * 26
# Подсчет вероятностей каждого символа
for statement in crew_statements:
for char in statement:
char_probabilities[ord(char) - ord('a')] += 1
# Создание списка разниц вероятностей
differences = []
for statement in crew_statements:
statement_difference = 0
for char in statement:
statement_difference += char_probabilities[ord(char) - ord('a')]
differences.append(statement_difference)
# Нахождение индекса высказывания с наименьшей суммой разниц
min_difference_index = differences.index(min(differences))
return min_difference_index + 1
# Вызов функции и вывод результата
print(find_martian_crew_member())
具体来说,错误在于数组超出了线路的限制:
它发生的时候,
char = ' '因为ord(' ') - ord('a') = -65。例如,您可以使用字典来代替数组。这是您的一段经过更改的代码:
所有更改的代码: