Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Найдите ошибку в коде

Reltorn Знаток (261), закрыт 5 лет назад
Я только что изучил малую часть Питона и накалякал такую вот штуку.
Получилось громоздко, но ниче не поделаешь. Ответ почти сходится. Уже битый час не могу найти ошибку. Спасайте люди добрые
Вот задание: Петя и Вася обменивались шифрованными сообщениями. Они брали некоторое
слово, записанное маленькими латинскими буквами и переставляли в нем буквы. Антон
перехватил одну из шифровок. Антон выдвинул несколько гипотез о том, что могло
содержаться в шифровке и составил список предполагаемых слов.
Выведите те слова из списка Антона, шифром которых может являться перехваченное
сообщение.
Входные данные
В первой строке располагается перехваченное сообщение.
Во второй строке записано число N – количество слов – гипотез Антона (1 ≤ N ≤ 100).
В следующих N строках записаны сами слова.
Каждое слово (как перехваченная шифровка, так и слова – гипотезы Антона) состоят
только из маленьких латинских букв и имеют длину не более 200 символов.
Выходные данные
Выведите те слова – гипотезы, в результате шифрования которых, могло получиться
перехваченное сообщение. Слова должны быть выведены в том же порядке в котором они
вводились, по одному слову в каждой строке.
Если ни одно слово не получилось выведите 0.

Проверка: Ввод: aamm 4 mama papa amam am. Вывод: mama, amam

Сама программа:
s=input("Enter the string: ")
Gip=int(input())
Pod=[0]
k=0
letter=0
digits=0
x=len(s)
for i in range(0,x,1):
if ((ord(s[i]) >= 97) and (ord(s[i]) <= 122)):
letter=letter+1
Bukavi=[0] #массив
print("letter: %d\n" %(letter))
for number in range(letter): #букавы слова
L =number + 1
H =number
LSlovo =s[H:L]
print(L,'Slovo=',LSlovo,sep='')
Bukavi.append(LSlovo)
for number in range(Gip):#гипотезы-слова
R=number+1
RSlovaGip=str(input())
print(R,'SlovaGip =',RSlovaGip,sep='')
letter1=0
digits1=0
x1=len(RSlovaGip)
k=0
for i in range(0,x1,1):
if ((ord(RSlovaGip[i]) >= 97) and (ord(RSlovaGip[i]) <= 122)):
letter1=letter1+1
if letter==letter1:
for number in range(letter1): #букавы в гипотезах
L =number + 1
H =number
LBukvaGip =RSlovaGip[H:L]
print(L,'BukvaGip=',LBukvaGip,sep='')
for number in range(letter):
if Bukavi[number] == LBukvaGip:
k=k+1
if k==letter:
Pod.append(RSlovaGip)

elif Pod==[0]:
Pod=[0]

print(Pod)
Дополнен 5 лет назад
Нуль в ответе не ошибка. Я его оставил специально
Лучший ответ
Остальные ответы
Павел Крезуб Гуру (3529) 5 лет назад
# Попробуй так. В твоем коде пытался разобраться, но из-за отступов так и не смог
slovo = input("Enter the string: ")
n = int(input())
symbol = [i for i in slovo]
print(symbol)
res = []

for i in range(n):
----word = [i for i in input()]
----h = [l for l in word if l in symbol]
----if len(symbol) == len(h): res.append(''.join(word))

print(res)
Марина Елькина Знаток (335) 5 лет назад
Это же задания всероссийской олимпиады по информатике как не стыдно...
Похожие вопросы