Форум сайта python.su
0
В программе странно работает функция min().
i = open('boxes.in', 'r') line = i.read().splitlines() n = str(line[0]).split()[0] m = str(line[0]).split()[1] del line[0] print(min(line)) counter = 1 counter2 = 0 counter3 = 0 p = 0 while counter <= int(m): if int(n) >= counter3 + int(min(line)): counter3+=int(min(line)) a = line.index(min(line)) print(a, line[a]) del line[a] counter2+=1 counter+=1 i.close() o = open('boxes.out', 'w') o.write(str(counter2)) o.close()
Отредактировано PythonOrangutang (Апрель 14, 2018 08:45:02)
Офлайн
186
Ты бы хоть написал что эта программа должна делать?
Офлайн
0
RodegastПоверь, будет сложно объяснить. Фактически мне нужно перебирать минимальные числа из файла boxes.in (не считая первой строки). Наименьшие числа складывать, пока следующее прибавление не превысит число n (в данном случае 20). И написать количество прибавленых чисел.
Ты бы хоть написал что эта программа должна делать?
Офлайн
0
Ах да, использованные числа не должны повторяться и m это кол-во строк не считая первой (в данном примере 10)
Отредактировано PythonOrangutang (Апрель 14, 2018 08:09:20)
Офлайн
186
Вот как надо такое решать:
>>> n = 20 >>> s = """3 ... 9 ... 4 ... 2 ... 5 ... 47 ... 2 ... 12 ... 9 ... 6""" >>> i = 0 >>> for m, x in enumerate(sorted(set(map(int, s.split())))): ... if i >= n: ... break ... i += x >>> m 5
Отредактировано Rodegast (Апрель 14, 2018 00:45:11)
Офлайн
0
i = open('boxes.in', 'r') line = i.read().splitlines() n = str(line[0]).split()[0] del line[0] s = """3 9 4 2 5 47 2 12 9 6""" print(min(line)) counter = 1 counter2 = 0 counter3 = 0 p = 0 for m, x in enumerate(sorted(set(map(int, s.split())))): if str(counter) >= n: break counter += x i.close() o = open('boxes.out', 'w') o.write(str(m)) o.close()
Офлайн
186
> Не правильно работает.
Попробуй так
m = p = 0 for x in sorted(set(map(int, s.split()))): if p >= n: break p += x m += 1
Отредактировано Rodegast (Апрель 14, 2018 13:21:21)
Офлайн
0
Rodegast
> Не правильно работает.Попробуй так
i = open('boxes.in', 'r') line = i.read().splitlines() n = str(line[0]).split()[0] del line[0] s = """3 9 4 2 5 47 2 12 9 6""" print(min(line)) counter = 1 counter2 = 0 counter3 = 0 m = p = 0 for x in sorted(set(map(int, s.split()))): if str(counter) >= n: break counter += x m += 1 i.close() o = open('boxes.out', 'w') o.write(str(m)) o.close()
Офлайн
186
if str(counter) >= n:
Офлайн
0
i = open('boxes.in', 'r') line = i.read().splitlines() n = str(line[0]).split()[0] del line[0] s = line counter = 1 counter2 = 0 counter3 = 0 m = p = 0 for x in sorted(set(map(int, s.split()))): if counter >= int(n): break counter += x m += 1 i.close() o = open('boxes.out', 'w') o.write(str(m)) o.close()
s=['3', '9', '4', '2', '5', '47', '2', '12', '9', '6']
s = """3 9 4 2 5 47 2 12 9 6"""
Отредактировано PythonOrangutang (Апрель 14, 2018 14:44:41)
Офлайн