NameError: имя 'e' не определено, как считать правильно - PullRequest
0 голосов
/ 05 ноября 2019
  1. Я разделил предложение.
  2. Я хочу посчитать символ "e" в моей переменной "s" как второй шаг.

Я пыталсяs_list.count(e), s_list.count("e") и многие другие

Код:

s = "Ich lerne Python"

s_list = s.split() #Spaltung vom String
s_list.sort() #Sortierung

print(s_list)


s_list.count(e)
print(s_list)

['Ich', 'Python', 'lerne']
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-72-29d14ddb1793> in <module>()
      3 s_list.sort() #Sortierung
      4 print(s_list)
----> 5 s_list.count(e)
      6 print(s_list)

NameError: name 'e' is not defined

Ответы [ 3 ]

1 голос
/ 05 ноября 2019

Существует несколько способов приблизиться к задаче подсчета определенных символов в строке, ниже приведены 2 подхода, с которыми вы можете поиграть, я бы порекомендовал подход 2, используя функцию подсчета, поскольку она более проста, а также устраняет цикл.

Подход 1 - для цикла

# initializing string  
test_str = "Ich lerne Python"

# counting e  
count = 0

for i in test_str: 
    if i == 'e': 
        count = count + 1

Подход 2 - Счет

# count() 

# initializing string  
test_str = "Ich lerne Python"

# using count() to get count  
# counting e  
counter = test_str.count('e') 

# printing result  
print ("Count of e in Ich lerne Python is : " +  str(counter))
1 голос
/ 05 ноября 2019

Если у вас есть список со строками, то вы должны посчитать "e" для каждой строки отдельно и суммировать значения.

s_list = ['Ich', 'Python', 'lerne']

result = 0

for word in s_list:
    result = result + word.count("e")

print(result)

То же самое со списком

s_list = ['Ich', 'Python', 'lerne']

result = sum(word.count("e") for word in s_list)

print(result)

Кстати: вы можете сосчитать "e", прежде чем разделить его

s = "Ich lerne Python"

result = s.count("e")

print(result)
1 голос
/ 05 ноября 2019

Почему бы не просто s.count("e"). Вы можете использовать метод count непосредственно в строке. Проблема, которая у вас есть, но вы, по-видимому, уже попробовали ее по-другому, как вы указали в своем вопросе, заключается в том, что e - это переменная, и вы хотите найти "e", букву "e".

Однако после применения метода разбиения у вас есть список строк, в которых вы ищете букву «е». Вы не можете найти ничего, поскольку в вашем списке нет записи "e", но выглядит следующее: ['Ich', 'lerne', 'Python']. Разделение разделяется не после каждой буквы, а через пробелы.

Если вы хотите перейти через разделенную строку, вы можете сделать что-то вроде:

count_e = 0
for word in s_list:
    count_e = count_e + word.count("e")

или в понимании списка:

count_e = sum([word.count("e") for word in s_list])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...