#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
Комментариев нет:
Отправить комментарий