2016-12-30 9 views
-1

Я только начал изучать Python, и я просто сделать программы на практике новую тему я узнал, поэтому, пожалуйста, быть нежным :)Как только верхние буквы из строки

Я стараюсь, чтобы иметь var = к предложению, затем проверьте буквы верхнего регистра, затем добавьте буквы верхнего регистра в список. Если я изменю l = o[6], я получаю «G», поэтому приложение и .isupper() работают, но я не могу заставить i работать, я думал, что это может быть i становится строкой, но i объявлен как int (python 3.6).

Это то, что я до сих пор:

o = "the doG jUmPeD ovEr The MOOn" 
upperCase = [] 
i = 0 
l = o[i] 

if l.isupper() == True: 
    upperCase.append(l) 

else: 
    i += 1 

print (upperCase) 
+1

вам нужно использовать цикл – martianwars

+1

Я думаю, что нужно провести некоторые с официальным учебником Python (https://docs.python.org/3.6/tutorial/index.html). Это отличный учебник. – TigerhawkT3

+1

Я голосую, чтобы закрыть этот вопрос как вне темы, потому что SO не является учебным сервисом. – TigerhawkT3

ответ

0

Вы должны использовать цикл для создания этого списка. Цикл for очень прост в построении в Python. Он просто повторяет все буквы один за другим. Попробуйте изменить код к,

o = "the doG jUmPeD ovEr The MOOn" 
upperCase = [] 
for i in range(0, len(o)): 
    l = o[i] 
    if l.isupper() == True: 
     upperCase.append(l) 

print (upperCase) 

Конечно, есть лучшие способы сделать это. Вам не нужно явно определять l = o[i]. Вы можете сделать это как часть цикла! Кроме того, вам не нужен == True. Что-то вроде этого -

o = "the doG jUmPeD ovEr The MOOn" 
upperCase = [] 
for l in o: 
    if l.isupper(): 
     upperCase.append(l) 

print (upperCase) 

Даже лучше, используйте filter и lambda.

print(filter(lambda l: l.isupper(), o)) 
+1

Я понимаю, что вы пытаетесь показать OP, что они сделали не так, но вы действительно не должны использовать диапазон (len (независимо)), они могли бы также научиться писать вещи Pythonically с самого начала. Кроме того, нет необходимости предварительно инициализировать i или явно сравнивать с True. –

+1

Я добавил новую реализацию и добавил еще один питонический путь. – martianwars

+0

Почему вы делаете 'l.isupper() == True'? 'l.isupper()' уже оценивает значение boolean. – TigerhawkT3

0

Вы можете сделать это намного проще.

o = "the doG jUmPeD ovEr The MOOn" 
upperCase = [] 
for letter in o: 
    if letter.isupper(): 
     upperCase.append(letter) 

print(upperCase) 

Просто перебирайте строку, она будет делать это по одной букве за раз.

0

Вы также можете попробовать список comphresion

upperCase= [ i for i in o if i.isupper() ] 
0

В качестве альтернативы, вы можете использовать filter с str.upper как:

>>> o = "the doG jUmPeD ovEr The MOOn" 

# Python 2 
>>> filter(str.isupper, o) 
'GUPDETMOO' 

# Python 3 
>>> ''.join(filter(str.isupper, o)) 
'GUPDETMOO' 
+0

Nice. Не думал об этом – NinjaGaiden

 Смежные вопросы

  • Нет связанных вопросов^_^