Как игнорировать предыдущий ввод? - PullRequest
0 голосов
/ 20 октября 2018

Я пытаюсь создать функцию цикла while с цифрами.По сути, моя функция состоит в том, чтобы продолжать складывать числа до тех пор, пока не будет введена нецифровка, и тогда я могу разорвать цикл.Однако при вводе нецифрового ввода нецифровое значение также добавляется в уравнение и приводит к ошибке.

Как исключить нецифровое число из уравнения?

sum_num = 0

while True:
    num = input("Please input a number: ")
    sum_num = int(sum_num) + int(num)
    if num.isdigit() != True:
        print(sum_num)
        break

Ответы [ 2 ]

0 голосов
/ 20 октября 2018

Если вы заверните его в попытке / за исключением того, что он должен делать то, что вы хотите.

while True:
    num = input("Please input a number: ")
    try:
        sum_num = int(sum_num) + int(num)
    except ValueError as ex:
            print(sum_num)
            break
0 голосов
/ 20 октября 2018

Я бы использовал try except, чтобы поймать ошибку.Это дает понять, что вы избегаете такого.

Причина, по которой ваш код не работает, состоит в том, что вы пытаетесь добавить «нецифровую» (строку) к «цифре» (целому числу), прежде чем даже проверитьесли это возможно, что вы делаете после того, как уже вызвали ошибку.Если вы переместите оператор if выше, ваш код будет работать:

sum_num = 0

while True:
    num = input("Please input a number: ")
    if num.isdigit() != True:
        print(sum_num)
        break
    sum_num = int(sum_num) + int(num)
...