Member 13105517 Ответов: 2

Напишите функцию longest, которая возьмет строку слов, разделенных пробелами,и вернет самое длинное. Например: longest ("это Андела") = & gt; "Андела" longest ("а") => " а"


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

Что я уже пробовал:

def length(lists):
    a = 0 
    answer = ''
    for item in lists:
        x = len(item) 
    if x > a:
        a = x
        answer = item
    elif x == a:
        if item not in list:
            answer = answer + ' ' + item
    return answer
print length(list)

2 Ответов

Рейтинг:
1

Patrice T

Я не могу проверить этот код, но я бы изменил его на что-то подобное.

def length(lists):
a = 0
answer = ''
for item in lists:
    x = len(item)
    if x > a:
        a = x
        answer = item
    elif x == a:
        if item not in list:
            answer = answer + ' ' + item
return answer
print length(list)


Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволяет вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения, это невероятный инструмент обучения.

27.3. ПДБ — отладчика Python — питон 3.6.1 документации[^]
Отладка в Python | Python покоряет Вселенную[^]
pdb-интерактивный отладчик-Python модуль недели[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


Рейтинг:
1

Member 12264480

def longest(words):
  if type (words)!=str:
      raise TypeError ("input not a string")
  my= words.split()
  
  yours= None
  first_time =True
  for i in my:
    val= i
    
    if first_time or val>yours:
      yours=val
      
  return (yours)