Как вызвать результаты другой функции - PullRequest
0 голосов
/ 16 февраля 2020
def most_frequency_occ(chars,inputString):
    count = 0
    for ind_char in inputString:
        ind_char = ind_char.lower()
        if chars == ind_char:
             count += 1
    return count

def general(inputString):
    maxOccurences = 0
    for chars in inputString:
        most_frequency_occ(chars, inputString)

Это мой текущий код. Я пытаюсь найти наиболее часто встречающееся письмо в general. Я создал еще одну функцию с именем most_frequency_occ, которая находит указанный символ c в строке, которая встречается чаще всего, но как мне обобщить ее, чтобы найти частую букву в строке без указания конкретного символа c и только с использованием циклы, без какой-либо сборки в строковых функциях.

Например:

print(general('aqweasdaza'))

должен печатать 4, поскольку "a" встречается чаще всего, встречается 4 раза.

Ответы [ 3 ]

1 голос
/ 16 февраля 2020

Если я получил ваше задание, я думаю, что использование словаря будет более удобным для вас.

 # initializing string  
 str = "Hello world"

 # initializing dict of freq
 freq = {} 

     for i in str: 
         if i in freq: 
              freq[i] += 1
         else: 
              freq[i] = 1

 # Now, you have the count of every char in this string.
 # If you want to extract the max, this step will do it for you:

 max_freq_chr = max(stats.values())
0 голосов
/ 16 февраля 2020

В других ответах были предложены альтернативные способы подсчета букв в строке, некоторые из которых могут быть лучше, чем те, которые вы придумали самостоятельно. Но я думаю, что, возможно, стоит ответить на ваш вопрос о том, как вызвать вашу функцию most_frequency_occ из вашей функции general, даже если алгоритм невелик, поскольку вам нужно понять, как функции работают в других контекстах.

В вызовах функций нужно понимать, что выражение вызова будет оцениваться как значение, возвращаемое функцией. В данном случае это количество. Часто вам может потребоваться присвоить возвращаемое значение переменной, чтобы вы могли ссылаться на нее несколько раз. Вот как это может выглядеть:

count = most_frequency_occ(chars, inputString)

Теперь вы можете сделать сравнение между количеством и предыдущим лучшим счетом, чтобы увидеть, проверяли ли вы только что наиболее распространенную букву:

maxOccurences = 0
for chars in inputString:
    count = most_frequency_occ(chars, inputString)
    if count > maxOccurences:  # check if chars is more common than the previous best
        maxOccurences = count
return maxOccurences

Последнее замечание: некоторые имена переменных и функций немного вводят в заблуждение. Это часто случается, когда вы меняете свой код с одного проекта на другой, но не меняете имена переменных одновременно. Возможно, вы захотите иногда перечитать ваш код и дважды проверить, чтобы убедиться, что имена переменных по-прежнему совпадают с тем, что вы делаете с ними. Если нет, вам следует «реорганизовать» свой код, переименовав переменные, чтобы лучше соответствовать их фактическому использованию.

Чтобы указать c, ваша функция most_frequency_occ на самом деле не находит самого часто встречающегося символа, он лишь делает небольшой шаг в этом процессе, считая, как часто встречается один символ. Так что я бы назвал это count_char или что-то подобное. Функцию general можно назвать более описательной, например find_most_frequent_character.

. И переменная chars (которая существует в обеих функциях) также вводит в заблуждение, поскольку она представляет один символ, но имя chars подразумевает что-то во множественном числе (например, список или строку, содержащую несколько символов). Переименование его в char может быть лучше, так как это больше похоже на единственное имя.

0 голосов
/ 16 февраля 2020

Существует несколько способов найти наиболее распространенную букву в строке.

Один простой для понимания и мультиязычный способ сделать это будет:

  1. инициализация массива из 26 целых чисел, установленных на 0.
  2. go по каждой букве по одной из вашей строки, если первая буква представляет собой B (B = 2), вы можете увеличить второе значение массива
  3. Найдите наибольшее значение в вашем массиве, верните соответствующую букву.

Поскольку вы используете python, вы можете использовать словари, так как для реализации будет меньше работы.

Слово предостережения , похоже, вы выполняете школьное задание. Если в вашей школе есть средство проверки на плагиат, которое проверяет целое число rnet, вас могут поймать на нечестность академического c, если вы скопируете код вставки из целого числа rnet.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...