Я хочу целочисленный ввод для переменной x
, через пробел. Пример ввода пользователя 20 15 7 5 4 2
.Этот список должен быть введен в x
, а затем разделен на две части.Затем части должны быть вычтены друг с другом и вывести наименьшую возможную разницу.Приведенный ниже код разбивает входные данные уже частично на списки, но не завершает их.Я подумал, что либо создам цикл while, инкапсулируя все операторы if, но, тем не менее, выдает следующую ошибку:
Сообщение об ошибке
Traceback (most recent call last):
File "C:/Users/Array Partitioning.py", line 28, in <module>
arrpartitioning(input().split())
File "C:/Users/Array Partitioning.py", line 18, in arrpartitioning
b.append(max(x))
ValueError: max() arg is an empty sequence
Я предполагаю, что оператор whileне останавливается и пытается через некоторое время перебрать пустой список переменной x
.Первоначально я думал проверить длину переменной x
перед повторным запуском цикла while, но это не работает.Оператор if во втором цикле while также не помогает, даже если я сделаю отступ, чтобы включить его в цикл while.
# User input, space separated
ui = input()
x = list(map(int, ui)
half = sum(x)//2
# two empty lists to enter the x-values
a = []
b = []
flag = False
# while len(x) != 0:
# while loop to divide the values
while flag == False:
if sum(a) < half:
a.append(max(x))
x.remove(max(x))
while sum(b) < sum(a):
b.append(max(x))
x.remove(max(x))
# Same error message even if I indent the if-statement to the while-block
if len(x) == 0:
flag == True
Может кто-нибудь сначала объяснить мне, есть ли проблема в моем цикле while и, если да, во-вторых, как я могу выйти из цикла while, если в x
больше нет значений