Помогите улучшить код
На егэ по инфе в 26 задании надо будет написать программу, мой вариант вроде работает, но выглядит ужасно. Можете подсказать как код можно улучшить и сделать красивее. Задача под которую писал код :решу егэ
f = open("26_demo.txt","r");
s = 0
users = 0
arr = []
usersdata=0
maxusers=0
bsize=0
elem = ''
num_elem=0
for line in f:
x = line.split()
if len(x) == 2:
s = x[0]
users = x[1]
else:
elem = x[0]
arr.append(int(elem))
arr.sort()
for i in range(len(arr)):
if (usersdata+int(arr[i]))<=int(s):
usersdata+=int(arr[i])
maxusers+=1
else:
num_elem = i-1
break
data = 0
bp=True
for k in range(num_elem):
if bp == False:
break
for n in range(num_elem+1,len(arr)):
data = usersdata-int(arr[num_elem-k])
data+=arr[n]
if data == int(s):
bsize = arr[n]
bp=False
break
print(maxusers,bsize)
Ответы (1 шт):
Автор решения: m_ocean
→ Ссылка
Ну на :) Почистил, что смог:
arr = []
usersdata = 0
maxusers = 0
# Нет нужды заранее определять эти переменные:
# users = 0
# s = 0
# bsize = 0
# elem = ''
# num_elem = 0
# Контекстный менеджер автоматически закрывает файл, чего ты, кстати, не сделал:
with open("demo.txt", "r") as f:
for line in f:
x = line.split()
if len(x) == 2:
s = x[0]
users = x[1]
else:
elem = x[0]
arr.append(int(elem))
arr.sort()
for i, item in enumerate(arr): # enumerate – классная функция!
if (usersdata + int(item)) <= int(s):
usersdata += int(item)
maxusers += 1
else:
num_elem = i-1
break
# Дальше ничего не придумал:
data = 0
bp = True
for k in range(num_elem):
if bp == False:
break
for n in range(num_elem+1, len(arr)):
data = usersdata-int(arr[num_elem-k])
data += arr[n]
if data == int(s):
bsize = arr[n]
bp = False
break