Как определить последний ввод данных и вывести сначала s, потом списки p?

Вот код:

def r(a):
    global s
    p=[]
    k = len(a)//3
    if a[:k]==a[k:k*2]==a[k*2:]:
        p.append(a[:k])
    else:
        if a[:k]==a[k:k*2]:
            p.append(a[:k]+'*')
            s += 1
        elif a[:k]==a[k*2:]:
            p.append(a[:k]+'*')
            s += 1
        elif a[k*2:]==a[k:k*2]:
            p.append(a[k*2:]+'*')
            s += 1
    print(p)
    return s

def main():
    global h
    while True:
        try:
            t = input()
            r(t)
        except (ValueError, EOFError):
            return

if __name__ == "__main__":
    s=0
    main()

И ввод данных в столбик:

  • 181818
  • 191818
  • 181918
  • 181819

Ответы (1 шт):

Автор решения: CrazyElf

Можно не печатать сразу результаты вычислений в функции, а вернуть из через return и потом уже напечатать в нужном порядке и формате в основном коде:

def r(a):
    # ...
    return s, p

s, p = r(t)
print(s)
print('\n'.join(p))
→ Ссылка