Извините, если я действительно неосведомлен, я начал изучать код Python недавно (первый язык) и работал над этой задачей на codewars.com, чтобы создать одну латинскую программу с одним словом. Это довольно грязно, но, похоже, работает, кроме того, что сообщение:IndexError: индекс строки за пределами диапазона. Pig Latin
Traceback:
in
in pig_latin
IndexError: string index out of range
... появляется. Я посмотрел онлайн, и я вроде как собираюсь, вероятно, какой-то фрагмент кода, который просто выходит из строя, или мне нужно -1 где-то или что-то в этом роде. Мне было интересно, сможет ли кто-нибудь помочь мне определить, где это будет. Это не помогло, конечно, тот факт, что я сделал это трудно для себя с моей неэффективностью: P благодаря
def pig_latin(s):
word = 'ay'
word2 = 'way'
total=0
total2=0
lst = []
val = None
#rejecting non character strings
for c in s:
if c.isalpha() == False:
return None
#code for no vowels and also code for all consonant strings
for char in s:
if char in 'aeiou':
total+=1
if total==0:
return s + 'ay'
else:
pass
elif char not in 'aeiou':
total2+=1
if total2 == len(s):
answer_for_cons = s + word
return answer_for_cons.lower()
#first character is a vowel
if s[0] in 'aeiou':
return s + word2
#normal rule
elif s[0] not in 'aeiou':
for c in s:
if c in 'aeiou':
lst.append(s.index(c))
lst.sort()
answer = s[lst[0]:len(s)] + str(s[:lst[0]]) + word
return answer.lower()
Спасибо за помощь, что, похоже, избавились от сообщения об ошибке.В настоящее время у меня нет базового теста, в котором говорится, что «yaay» должен равняться «ayay». Я думал, что тесты прошли гладко, любая идея, о чем идет речь? –
@BillUrquhart Хмм. Я не изменил ни одну из основных логических манипуляций с текстом из вашей версии. Я предполагаю, что должно быть дополнительное правило для обработки слов, начинающихся с 'ya' (или что-то в этом роде). У вас есть ссылка на правила, которые должен реализовать ваш код? –
Извинения, я прокомментировал перед тем, как увидеть вашу измененную версию. Позвольте мне реализовать ваши и отложить назад –