Python, SPOJ - Jak mogę zrobić to zadanie (JSPACE - Spacje) ?

0

Język - Python 3.5
Mam do wykonania takie zadanie
JSPACE - Spacje
https://pl.spoj.com/problems/JSPACE/
Zasadniczo polega na usunięciu spacji i zaczęciu każdego wyrazu z dużej litery

Sprawia mi ono jednak problem bo na wejściu podany jest tekst oddzielony znakiem nowej linii (Enterem) a jak wiadomo enter zakończy działanie fukncji input()
Na razie mam coś takiego

print(input().replace(' ','').title())

0

Nie twórz potworków jednoliniowych a rozbij i przechowaj w zmiennej:

sms_raw = input()

input oczywiście wyjdzie na enterze ale możemy zrobić coś w stylu:

lines = '' #albo użyj listy i potem ''.join()
while True:
    line = input()
    if not line:
        break
    lines += line

replace(' ', '') nie sprawdzi się - jeżeli usuniesz spacje zanim przetworzysz słowa to nie będziesz mógł później ich rozpoznać. Spróbuj powalczyć z funkcją split() (wynikiem będzie lista słów) a po przetworzeniu wyniku stwórz wynikowy string przez funkcję join.

1
#!/usr/bin/env python3
msg = "Dzisiaj jest   czwartek,"
print("".join(msg.title().split()))

Czytanie linii wykonaj poprzez with lub nawet bezpośrednio na sys.stdin

#!/usr/bin/env python3
import sys
for line in sys.stdin:
    print("".join(line.title().split()))
0

Przepraszam za bład w poście. Najpierw title() potem replace()
Zrobiłem w ten sposób i jak się spodziewałem "błąd wykonywania"
Podejrzewam że program czeka na entera którego nie dostaje

x = ''
while True:
    y = input()
    if not y:
        break
    x = x + y + '\n'
print(x.title().replace(' ',''))

0

Spoj ma to do siebie że czasem bywają puste linie, spróbuj z try / except o tak

while(1):
   try:
       linia = input()
       #tu reszta twojego kodu np:
       if not linia:
           break
   except:
       pass

1 użytkowników online, w tym zalogowanych: 0, gości: 1