101

Re: Потрібна допомога

Знову помилка...

v = input().split()
print(v)
maximum = []
minimum = []
p = 0
for i in range(299):
    m = v.pop(0)
    n = v.pop(0)
    m = int(m)
    n = int(n)
    if p == 0:
        if m > n:
            maximum.append(str(m))
            minimum.append(str(n))
        else:
            maximum.append(str(n))
            minimum.append(str(m))
    else:
        t = int(maximum.pop(0))
        c = int(minimum.pop(0))
        if m > n:
            if m > t:
                maximum.append(str(m))
            else:
                maximum.append(str(t))
            if n < c:
                minimum.append(str(n))
            else:
                minimum.append(str(c))
        else:
            if n > t:
                maximum.append(str(n))
            else:
                maximum.append(str(t))
            if m < c:
                minimum.append(str(m))
            else:
                minimum.append(str(c))
    p = p + 1
x = minimum.pop(0)
maximum = maximum.append(x)
q = ' '.join(maximum)
print(q)

Ця програма повинна виконати ось це завдання - http://www.codeabbey.com/index/task_vie … m-of-array

Вибиває таку помилку - Traceback (most recent call last):  File "solution.py", line 7, in <module>    m = v.pop(0)IndexError: pop from empty list
В кінці, я так зрозумів, пише, що функція поп спрямована (чи як це правильно сказати) пустий список. Але ж список то геть не пустий!

102

Re: Потрібна допомога

/KIT\ написав:

спробуй

input().split(' ')

та ж сама помилка

103

Re: Потрібна допомога

У списку v 300 значень. Ви робите

    m = v.pop(0)
    n = v.pop(0)

Скільки значень залишилося в масиві?
Ну а загалом

v = int(x) for x in input().split()
print(max(v),min(v))
Подякували: Eff1c1

104

Re: Потрібна допомога

koala написав:

У списку v 300 значень. Ви робите

    m = v.pop(0)
    n = v.pop(0)

Скільки значень залишилося в масиві?
Ну а загалом

v = int(x) for x in input().split()
print(max(v),min(v))

Там просто в завданні прохання не використовувати встроєні функції для визначення максимуму і мінімуму.

105

Re: Потрібна допомога

v = sorted(int(x) for x in input().split())
print(v[-1],v[0])

Так краще?

І ви помітили перше питання?

Подякували: Eff1c, leofun012

106

Re: Потрібна допомога

koala написав:
=v = sorted(int(x) for x in input().split())
print(v[-1],v[0])

Так краще?

І ви помітили перше питання?

Дякую.
Так там хіба не список? Чи це одне й теж?
Я думав просто забирати по 2 елемента і їх порівнювати спочатку між собою, а потім з тими числами, що в списках.

107

Re: Потрібна допомога

Вибачте, будь ласка, скопіюйте те питання, на яке ви відповідаєте, бо поки що у мене стійке враження, що у вас якийсь шматок тексту відображається зовсім не так, як у мене. Конкретно цей:

koala написав:

У списку v 300 значень. Ви робите

    m = v.pop(0)
    n = v.pop(0)

Скільки значень залишилося в масиві?

Подякували: Eff1c1

108

Re: Потрібна допомога

Ок, якщо так заскладно: на столі лежало 300 яблук. З них 299 разів взяли по 2 яблука. Скільки яблук лишилося на столі?

109

Re: Потрібна допомога

-298?

Подякували: koala1

110

Re: Потрібна допомога

Затупив. :(

111

Re: Потрібна допомога

Потрібно заукруглити числа з комою до цілих, але int() 1,5 заукруглює до 1, а потрібно щоб 0,5 заукруглювалося до 1.
Надіюсь, ви зрозуміли.
Як це можна виправити?

112

Re: Потрібна допомога

Ви, звісно, вже прочитали довідку по всіх вбудованих функціях, перед тим як питати на форумі?

Подякували: ping, Eff1c2

113

Re: Потрібна допомога

Крім того, 0.5 і має заокруглюватися до 0, якщо округлення «до найближчого парного».

Подякували: ping, Eff1c2

114

Re: Потрібна допомога

Eff1c написав:

Потрібно заукруглити числа з комою до цілих, але int() 1,5 заукруглює до 1, а потрібно щоб 0,5 заукруглювалося до 1.
Надіюсь, ви зрозуміли.
Як це можна виправити?

не виправити, а написати собі свою функцію.

для заокруглення є round
int - не заокруглює
https://docs.python.org/3/library/functions.html
https://docs.python.org/3/library/math.html

Подякували: Eff1c1

115

Re: Потрібна допомога

Дякую

116

Re: Потрібна допомога

Ніяк не можу знайти помилку в цій програмі.

v = int(input())
out = []
for i in range(v):
    n1 = input().split()
    for w in range(3):
        n1.append(int(n1.pop(0)))
    n2 = n1.pop(n1.index(max(n1)))
    print(str(n2))
    print(n1)
    n3 = n1.pop(0)
    n4 = n1.pop(0)
    n5 = n3 + n4
    if n2 > n5:
        m = 0
    else:
        m = 1
    out.append(str(m))
print(' '.join(out))

Програма створена для цієї задачі - http://www.codeabbey.com/index/task_view/triangles
Прога робить і мої тестування чудово проходить, але на тій задачі з її випадковими числами видає неправильну відповідь.
Ps. Я не став порівнювати кожну сторону з сумою протилежних сторін, так як якщо визначити найбільшу, то достатньо порівняти тільки її.

117

Re: Потрібна допомога

Eff1c написав:

Ніяк не можу знайти помилку в програмі...

Програма створена для цієї задачі - http://www.codeabbey.com/index/task_view/triangles

Я не став перевіряти ваш код, бо пітона я ще не вивчив, і взагалі сьогодні я вдруге в житті писав на Python 3. Ось робочий код (для 3.6) :

out = []
for index in range(int(input())):
    triplet = list(map(int, input().split(' ')))
    #print(' '.join(map(str, triplet)))
    valid = True
    for i, side in enumerate(triplet):
        valid &= side <= sum([s for j, s in enumerate(triplet) if j != i])
    out.append('1' if valid else '0')
print(' '.join(out))

Якщо якийсь тест не пройде, то попробуйте "side < sum" замість "side <= sum".

Подякували: Eff1c1

118 Востаннє редагувалося koala (31.01.2018 20:32:15)

Re: Потрібна допомога

Найпростіший вираз для перевірки, чи можуть a,b,c сторонами трикутника:

abs(a-b)<c<a+b

Як його отримати:
нам потрібно, щоб виконувалося a<b+c, b<a+c та c<a+b. Третій вираз ми бачимо в правій частині. В двох інших винесемо c:
c>b-a
c>a-b
Очевидно, що з чисел (a-b,b-a) хоча б одне буде невід'ємним, і є сенс порівнювати лише із ним:
c>|a-b|.
Отже, маємо c<a+b і c>|a-b|. Суміщаємо і отримуємо наш вираз.

triangles = int(input())
for _ in range(triangles): #нам не потрібен номер ітерації
    [a,b,c] = int(x) for x in input().split()
    print(1 if abs(a-b)<c<a+b else 0, end=' ')

В принципі, перші 2 рядки теж можна сумістити майже без втрати читаності.

А ваша помилка, швидше за все, в тому, що ви > замість >= поставили. Якщо у "трикутника" сторони 2,3,5, то це не трикутник.

Подякували: leofun01, Eff1c2

119

Re: Потрібна допомога

koala написав:
triangles = int(input())
for _ in range(triangles): #нам не потрібен номер ітерації
    [a,b,c] = int(x) for x in input().split()
    print(1 if abs(a-b)<c<a+b else 0, end=' ')

Але print треба робити після циклу, а не всередині.

koala написав:

А ваша помилка, швидше за все, в тому, що ви > замість >= поставили. Якщо у "трикутника" сторони 2,3,5, то це не трикутник.

Я вже хотів писати, що це трикутник, але на всякий випадок заглянув до вікі і ...

wiki написав:

трьох точок, що не лежать на одній прямій

мені соромно за людство.

120

Re: Потрібна допомога

koala написав:

Найпростіший вираз для перевірки, чи можуть a,b,c сторонами трикутника:

abs(a-b)<c<a+b

Як його отримати:
нам потрібно, щоб виконувалося a<b+c, b<a+c та c<a+b. Третій вираз ми бачимо в правій частині. В двох інших винесемо c:
c>b-a
c>a-b
Очевидно, що з чисел (a-b,b-a) хоча б одне буде невід'ємним, і є сенс порівнювати лише із ним:
c>|a-b|.
Отже, маємо c<a+b і c>|a-b|. Суміщаємо і отримуємо наш вираз.

triangles = int(input())
for _ in range(triangles): #нам не потрібен номер ітерації
    [a,b,c] = int(x) for x in input().split()
    print(1 if abs(a-b)<c<a+b else 0, end=' ')

В принципі, перші 2 рядки теж можна сумістити майже без втрати читаності.

А ваша помилка, швидше за все, в тому, що ви > замість >= поставили. Якщо у "трикутника" сторони 2,3,5, то це не трикутник.

Дякую, хоч я і не до кінця зрозумів ваш код.
А на рахунок трикутника з нульовою площею, то так було написано в завданні. Я також думав, що це помилка, тому провіряв і так і так, але обидві спроби були невдалими.

leofun01 написав:

мені соромно за людство.

Прочитайте уважніше умову, а тоді вже соромтеся :)

Подякували: leofun011