Итак, мне задали этот вопрос: вы делите строки на три типа: хорошие, плохие или смешанные. Если в строке есть 3 последовательных гласных или 5 последовательных согласных, или и то, и другое, то она классифицируется как плохая. В противном случае он классифицируется как хороший. Гласные в английском алфавите — это [a, e, i, o, u], а все остальные буквы — согласные.
Строка также может содержать символ ?, который может быть заменен как гласной, так и согласной. Это означает, что строка ?aa может быть плохой, если ? является гласным или хорошо, если это согласный. Этот тип строки относится к категории смешанных.
Это код, который я создал до сих пор:
def classifyStrings(s):
l = list(s)
numberofvowels = 0
numberofconsonants = 0
punctuationpresent = False
for i in l:
if i == "a" or "e" or "i" or "o" or "u":
numberofvowels += 1
else:
numberofconsonants += 1
if numberofvowels >= 3 or numberofconsonants >=5 and i != '?':
return "bad"
else:
return "good"
if i in l == "?":
punctuationpresent = True
return "mixed"
Пока мне удалось пройти 5/17 тестовых случаев. Я не уверен, как улучшить этот код, чтобы пройти все тестовые случаи. Основные проблемы, которые я должен исправить: вопросительный знак между гласными или согласными, например. a?a, согласные между гласными, например. аба, гласные между согласными, напр. баб
if i == "a" or "e" or "i" or "o" or "u":
не является правильным способом сравнения нескольких значений. Используйтеif i == "a" or i == "e" or i == "i" or i == "o" or i == "u":
. Или короче:if i in "aeiou":
- person Johnny Mopp   schedule 09.03.2021return "good"
делает недоступным весь код под ним. - person Johnny Mopp   schedule 09.03.2021