Страницы

Поиск по вопросам

понедельник, 23 декабря 2019 г.

Ввод и вывод в одну строку на Python

#python


Есть код 

while True:
try:
    a, b = map(int, input().split())
    c = a + b
    print(c)
except ValueError:
    continue
else:
    break


который выводит 

2 2 #это числа введены пользователем
4 #это результат 


как сделать чтобы вывод происходил на одной строке с вводом через пробел? вот так

2 2 4

    


Ответы

Ответ 1



После того, как пользователь завершит ввод, в любом случае произойдёт перевод строки. Но можно вернуться на предыдущую строку вот так: import sys a, b = map(int, input().split()) c = a + b sys.stdout.write("\x1b[1A") sys.stdout.write('{} {} {}'.format(a, b, c)) Правда, с обработкой некорректных значений тут сложнее. Даже если как в вашем примере всё это дело обернуть в try ... except, то у меня всё рано пока не получается избавиться от ввода, оставшегося с предыдущей итерации. UPD: Сейчас подумал, что можно чистить остатки предыдущий итерации ДО инпута. Но в этом случае нужно отслеживать - а была ли предыдущая итерация или сейчас пока первая: import sys is_first_try = True while True: try: if not is_first_try: sys.stdout.write("\x1b[1A" + " "*20 + "\b"*20) is_first_try = False a, b = map(int, input().split()) c = a + b sys.stdout.write("\x1b[1A") sys.stdout.write('{} {} {}'.format(a, b, c)) except ValueError: continue else: break

Комментариев нет:

Отправить комментарий