Python: преобразование слова в список букв, затем возврат индексов букв по алфавиту в нижнем регистре

#python #string #list

#python #строка #Список

Вопрос:

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

 alpha = map(chr, range(97, 123))
word = "computer"
word_list = list(word)

one = word[0]
two = word[1]
three = word[2]
four = word[3]
five = word[4]
six = word[5]
seven = word[6]
eight = word[7]


one_index = str(alpha.index(one))
two_index = str(alpha.index(two))
three_index = str(alpha.index(three))
four_index = str(alpha.index(four))
five_index = str(alpha.index(five))
six_index = str(alpha.index(six))
seven_index = str(alpha.index(seven))
eight_index = str(alpha.index(eight))

print (one   "="   one_index)
print (two   "="   two_index)
print (three   "="   three_index)
print (four   "="   four_index)
print (five   "="   five_index)
print (six   "="   six_index)
print (seven   "="   seven_index)
print (eight   "="   eight_index)
  

Комментарии:

1. Это поиск алфавитного индекса каждого символа a -> 0, b -> 1, c -> 2,...z - >25 .

2. используйте for letter in word: (или for letter in word_list )

Ответ №1:

То, что вы, вероятно, ищете, — это цикл for.

Используя цикл for, ваш код может выглядеть следующим образом:

 word = "computer"

for letter in word:
  index = ord(letter)-97
  if (index<0) or (index>25):
    print ("'{}' is not in the lowercase alphabet.".format(letter))
  else:
    print ("{}={}".format(letter, str(index 1))) #  1 to make a=1
  

Если вы используете

 for letter in word:
  #code
  

следующий код будет выполнен для каждой буквы в слове (или элемента в word, если word, например, является списком).

Хорошее начало для изучения циклов здесь: https://en.wikibooks.org/wiki/Python_Programming/Loops

В Интернете вы можете найти множество ресурсов, посвященных этой теме.

Ответ №2:

Используйте для цикла для цикла,

 alpha = map(chr, range(97, 123))
word = "computer"
for l in word:
    print '{} = {}'.format(l,alpha.index(l.lower()))
  

Результат

 c = 2
o = 14
m = 12
p = 15
u = 20
t = 19
e = 4
r = 17
  

Ответ №3:

Начните с a dict , который сопоставляет каждую букву с ее номером.

 import string
d = dict((c, ord(c)-ord('a')) for c in string.lowercase)
  

Затем сопоставьте каждую букву вашей строки с соответствующим индексом.

 result = [(c, d[c]) for c in word]
  

Ответ №4:

спасибо за помощь, удалось решить это самостоятельно другим способом, используя функцию и цикл while, не такой короткий, но будет работать для всех слов в нижнем регистре:

 alpha = map(chr, range (97,123))
word = "computer"
count = 0
y = 0

def indexfinder (number):
     o = word[number]
     i = str(alpha.index(o))
     print (o   "="   i)


while count < len(word):
    count = count   1
    indexfinder (y)
    y = y 1