Выдаёт ошибку "name 'x' is not defined"

_YaNeRobot

Новичок
Пользователь
Сен 12, 2020
3
0
1
На python 3.8.5 пытаюсь написать программу, которая из трёх введённых чисел выводит большее, меньшее и оставшееся:

a = int(input())
b = int(input())
c = int(input())
if a > c > b or a == c and c > b:
x, n, v = a, b, c
elif a >= b >= c:
x, n, v = a, c, b
elif b > a == c or a < b == c:
x, n, v = b, a, c
elif b > a > c:
x, n, v = b, c, a
elif a < b and b < c:
x, n, v = c, a, b
elif a == b and b < c or a > b and a < c:
x, n, v = c, b, a
print(x)
print(n)
print(v)

С большинством условий всё работает нормально, но на последнем и предпоследнем условии - 'x' не определён
Кто-нибудь знает, в чём причина?
 

MacSeem

Пользователь
Пользователь
Май 15, 2020
37
6
8
Через список сортировкой конечно проще. Но если хочется именно с условиями потренироваться, то лучше ступеньками. Если уж одно большее нашел, то сразу и с оставшимися двумя разобраться.
Python:
a = int(input())
b = int(input())
c = int(input())


if a > b and a > c:
    print(a, end=' ')
    if b > c:
        print(c, b)
    else:
        print(b,c)
elif b > c:
    print(b, end=' ')
    if a > c:
        print(c, a)
    else:
        print(a,c)
else:
    print(c, end=' ')
    if a > b:
        print(b,a)
    else:
        print(a,b)
 

Vladimirych

Новичок
Пользователь
Авг 7, 2020
12
1
3
Код:
l = sorted([int(input()) for i in range(3)], reverse=True)
a = l.pop(0)
b = l.pop(-1)
c = l.pop(0)
print(a, b, c)
 
  • Мне нравится
Реакции: MacSeem

_YaNeRobot

Новичок
Пользователь
Сен 12, 2020
3
0
1
Через список сортировкой конечно проще. Но если хочется именно с условиями потренироваться, то лучше ступеньками. Если уж одно большее нашел, то сразу и с оставшимися двумя разобраться.
Python:
a = int(input())
b = int(input())
c = int(input())


if a > b and a > c:
    print(a, end=' ')
    if b > c:
        print(c, b)
    else:
        print(b,c)
elif b > c:
    print(b, end=' ')
    if a > c:
        print(c, a)
    else:
        print(a,c)
else:
    print(c, end=' ')
    if a > b:
        print(b,a)
    else:
        print(a,b)
Да, я понимаю, что я, мягко сказать, не самый рациональный код написал, просто я не понимаю, почему ошибку выдаёт: строчки все аналогичные друг другу, только какие-то работают, а какие-то - нет. Но всё равно спасибо за ответ
 

Vladimirych

Новичок
Пользователь
Авг 7, 2020
12
1
3
У меня ваш работает нормально

Код:
a = int(input())
b = int(input())
c = int(input())
if a > c > b or a == c and c > b:
    x, n, v = a, b, c
elif a >= b >= c:
    x, n, v = a, c, b
elif b > a == c or a < b == c:
    x, n, v = b, a, c
elif b > a > c:
    x, n, v = b, c, a
elif a < b and b < c:
    x, n, v = c, a, b
elif a == b and b < c or a > b and a < c:
    x, n, v = c, b, a
print(x)
print(n)
print(v)
 

_YaNeRobot

Новичок
Пользователь
Сен 12, 2020
3
0
1
Теперь я понял) Я не туда посмотрел и не дописал в строчке с b, a, c основную b > c > a
Извиняюсь
 

Форум IT Специалистов