Давайте сосредоточимся на этом коде:
for c in s:
if len(s)!= 4:
valid = False
if not c.isdigit():
print (c, 'is not a valid input')
number = int(s)
Первое, что нужно сказать, это то, что проверку len()
следует переместить за пределы цикла символов.
if len(s)!= 4:
valid = False
for c in s:
...
Следующий комментарийчтобы сделать это, пока вы обнаруживаете не-цифры, вы продолжаете выполнять код, как будто ничего не случилось.Предположительно вы намереваетесь установить valid
в False
.
if not c.isdigit():
print (c, 'is not a valid input')
valid = False
Теперь основная часть проблемы.Вам нужно пропустить преобразование в int
при обнаружении неверного ввода.
if valid:
number = int(s)
...
Если вы хотите продолжить такой подход, ваш код будет выглядеть так:
valid = True
s = input('please type a 4-digit integer \n')
if len(s)!= 4:
valid = False
print(len(s), 'is an invalid amount of digits')
if valid:
for c in s:
if not c.isdigit():
valid = False
print (c, 'is not a valid input')
if valid:
number = int(s)
firstOne = number // 100
secondOne = number % 100
sum = firstOne + secondOne
x = '/'
print('your integer is ' + str(number), x, 'first two digits are ' + str(firstOne), x, 'second two digits are ' + str(secondOne), x, 'sum of two new numbers is ' + str(sum))
Сказав все это, я, вероятно, реорганизовал бы код, чтобы справиться с ошибками, как только они будут обнаружены.Код гораздо проще понять, если вы можете организовать свою обработку ошибок таким образом.
s = input('please type a 4-digit integer \n')
if len(s)!= 4:
sys.exit(str(len(s)) + ' is an invalid amount of digits')
for c in s:
if not c.isdigit():
sys.exit(c + ' is not a valid input')
number = int(s)
firstOne = number // 100
secondOne = number % 100
sum = firstOne + secondOne
x = '/'
print('your integer is ' + str(number), x, 'first two digits are ' + str(firstOne), x, 'second two digits are ' + str(secondOne), x, 'sum of two new numbers is ' + str(sum))
Теперь это начало в правильном направлении, но вы можете продолжать в том же духе, улучшая и улучшая код. Ответ Свена дает вам отличную иллюстрацию того, к чему в конечном итоге приведет такой процесс.