Я хочу проверить буквы, отличные от SOS в данной строке

Ввод: - SOSSOTSAR вывод: - 3 (T,A,R)

s = input()

 c=0 

s=s.replace('SOS','')

for i in range(len(s)):
    if(s[i] != "S"):
        c+=1
    elif(s[i+1] != "O"):
        c+=1
    elif(s[i+2] != "S"):
        c+=1
    i+=3    

print(c/3)
-3
Rick 12 Янв 2017 в 18:22

3 ответа

Лучший ответ

Вы можете сделать это в одну строку с пониманием списка:

s = input()
print len([x for x in s if x not in 'SOS'])

Однако если вам нужно количество уникальных букв в слове, которые не являются S или O, вы можете использовать:

s = input()
print len(set([x for x in s if x not in 'SOS']))

Например если ваше слово было SOSOTTAR, первый метод даст 4 (T, T, A, R), а второй - 3 (T, A, R).

1
asongtoruin 12 Янв 2017 в 15:37

Из вашего примера вы подсчитываете буквы, которые не равны буквам «S» и «O».

len([i for i in s if not (i == 'S' or i == 'O')])
0
Igor Komar 12 Янв 2017 в 15:57

Вы можете посчитать каждую букву на входе s следующим образом.

sum(1 for c in s if c not in "SO")

Или замените все S и O из строки и используйте длину.

len(s.replace("S", "").replace("O", ""))
0
Steven Summers 12 Янв 2017 в 15:34