Невозможно определить проблему с оператором печати - PullRequest
0 голосов
/ 17 июня 2019

О программе:

Эта программа принимает входную длину целого и целого числа и выдает на выходе минимально возможную сумму, которая возможна после разбиения целого числа на две части. Вы можете найти более подробную информацию здесь .

n = int(input())
s = str(input())
j, i = n // 2, n // 2 + 1

# debug
# print(f'initial \n x = {j}, y = {i}')

while (j > 0 and s[j] == '0'):
    j-=1
while (i < n and s[i] == '0'):
    i+=1

# debug
# print(f'final\n x = {j}, y = {i}')

if j==0:
     print(int(s[0:i]) + int(s[i:n]))
     print('statement1')
elif i==n:
    print( int(s[0:j]) + int(s[j:n]))
    print('statement2')
else:
    print(min( int(s[:i])+  int(s[i:]), int(s[:j]) + int(s[j:])))

когда я пытаюсь ввести входное значение:

  1. 7 и 1234567 - Я получаю правильный вывод 1801
  2. 4 и 0001 - правильный вывод также 1

но при попытке ввода 4 и 1000 программа выдает вывод ValueError: недопустимый литерал для int () с основанием 10: '' , причину которого я не могу выяснить.

Ответы [ 2 ]

0 голосов
/ 17 июня 2019

Ошибка говорит вам о проблеме: ValueError: invalid literal for int() with base 10: ''.Это означает, что вы получаете пустую строку "" в качестве аргумента для int().В приведенном вами примере кода эта ошибка произойдет, потому что s[i:n] возвращает "", когда i равно n.Вы можете проверить эту отладку с помощью этого print:

print(f'final j = {j}, i = {i}, n = {n}, s = `{s}`')
0 голосов
/ 17 июня 2019
if j==0:
    print(int(s[0:i]) + int(s[i:n]))

Для входов 4 и 1000 i и n равны 4.

Это означает, что s[i:n] становится s[4:4], что является пустой строкой.Вы не можете вызвать int() для пустой строки.

...