Нужна помощь по заданию в питоне

Eva

Новичок
Пользователь
Фев 2, 2022
58
3
8
15
Здравствуйте, тут вот появился вопрос как лучше сделать эту задачку то есть я понимаю что надо но немного не пойму как сделать так что бы программа считала идут они на возрастания или на убывания:

Задание: сделать
is_list_sorted(array)
функция принимает список цифр, возвращает true/false через return

логика какая? нужно вывести true, если список цифр идет по возрастанию в ином случае false
вот по типу такого:

[1, 2, 3] => true


[1, 1, 2] => true


[1, 1, 1] => true


[1, 3, 2] => false

вот тут у меня была идея сделать 3 переменных и допустим назвать их a,b,c и во внутрь вставить input() и потом когда пользователь будет водить допустим в переменную a цифру 1 потом в переменную b = 2 и c = 3 то потом поставить уже можно было бы if a < b то выводить true вот по такой логике.. но тут вот я хз может я тплю но когда я хочу такое сделать начиная с input() то ставлю просто уго в переменную a,b,c и потом я хотела вывести через print(a,b,c) и тут вот проблема.. он дает вести что то только 2 раза хотя там стоит 3 input() когда я хочу сделать что бы выводил 3 то я делаю 4 input() теперь он дает вести 3 раза но все равно выводит 2 раза.. а тот просто игнорит тут я хз что я делаю не так но я раньше так делала все работало.

а так если можно помогите как это лучше сделать и что вообще с input делать?
 

Вложения

  • [0.png
    [0.png
    29 КБ · Просмотры: 3
  • 45.png
    45.png
    29 КБ · Просмотры: 3
  • djn.png
    djn.png
    22 КБ · Просмотры: 3

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 580
457
83
ну все говорят, что с input проблема пайчарма...
у меня версия 2020.2.5 - все работает

по поводу задачи можно так
Python:
def is_list_sorted(array: list) -> bool:
    for i, v in enumerate(array):
        try:
            if v < array[i + 1] or v == array[i + 1]:
                continue
            else:
                return False
        except IndexError:
            return True


print(is_list_sorted([1, 2, 3]))
print(is_list_sorted([1, 1, 2, 4, 5, 1]))
print(is_list_sorted([1, 1, 1]))
print(is_list_sorted([1, 3, 2]))
print(is_list_sorted([3, 1, 2]))
 

Eva

Новичок
Пользователь
Фев 2, 2022
58
3
8
15
ну все говорят, что с input проблема пайчарма...
у меня версия 2020.2.5 - все работает

по поводу задачи можно так
Python:
def is_list_sorted(array: list) -> bool:
    for i, v in enumerate(array):
        try:
            if v < array[i + 1] or v == array[i + 1]:
                continue
            else:
                return False
        except IndexError:
            return True


print(is_list_sorted([1, 2, 3]))
print(is_list_sorted([1, 1, 2, 4, 5, 1]))
print(is_list_sorted([1, 1, 1]))
print(is_list_sorted([1, 3, 2]))
print(is_list_sorted([3, 1, 2]))
а как её исправить я уже даже обновляла и все не работает.. как на старую перейти? или как в новой управлять им?
сейчас протестирую!)
 

Eva

Новичок
Пользователь
Фев 2, 2022
58
3
8
15
ну все говорят, что с input проблема пайчарма...
у меня версия 2020.2.5 - все работает

по поводу задачи можно так
Python:
def is_list_sorted(array: list) -> bool:
    for i, v in enumerate(array):
        try:
            if v < array[i + 1] or v == array[i + 1]:
                continue
            else:
                return False
        except IndexError:
            return True


print(is_list_sorted([1, 2, 3]))
print(is_list_sorted([1, 1, 2, 4, 5, 1]))
print(is_list_sorted([1, 1, 1]))
print(is_list_sorted([1, 3, 2]))
print(is_list_sorted([3, 1, 2]))
хз на что ругается -_-
 

Вложения

  • помощь по питону.png
    помощь по питону.png
    49,3 КБ · Просмотры: 4

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 580
457
83
хз на что ругается -_-
у вас ниже код, строка 26, там цикл for с range, и там ошибка, array не определена, это уже не мой код
 

Eva

Новичок
Пользователь
Фев 2, 2022
58
3
8
15
у вас ниже код, строка 26, там цикл for с range, и там ошибка, array не определена, это уже не мой код
прикол в том что код всего на 16 строк.. и он ваш
 

Eva

Новичок
Пользователь
Фев 2, 2022
58
3
8
15
прикол в том что код всего на 16 строк.. и он ваш
 

Вложения

  • хза.png
    хза.png
    43,9 КБ · Просмотры: 3

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 580
457
83
возможно вы запускаете не тот файл...
на закладке файла сверху ПКМ далее run или ctrl+shift+f10
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
Код:
lst=[14, 2, 3, 4]
is_sorted=lambda x: all(i<j for i,j in zip(x, x[1:]))
print(is_sorted(lst))
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 580
457
83
Код:
lst=[14, 2, 3, 4]
is_sorted=lambda x: all(i<j for i,j in zip(x, x[1:]))
print(is_sorted(lst))
вы бы задачу прочитали для начала...
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
ничего и не попишешь))
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
подскажите, а как подправить код, чтобы в третей строчке результата получить знак равенства: "="
Код:
is_sorted=lambda x: all(i<j for i,j in zip(x, x[1:]))
print(is_sorted([1, 2, 3, 4]))
print(is_sorted([14, 2, 3, 4]))
print(is_sorted([14, 14]))
??
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
подскажите, а как подправить код, чтобы в третей строчке результата получить знак равенства: "="
Можно так например:
Python:
is_sorted = lambda x: all(i <= j for i, j in zip(x, x[1:]))
print(is_sorted([1, 2, 3, 4]))
print(is_sorted([14, 2, 3, 4]))
print(is_sorted([14, 14]))
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
спасибо за ответ, так ответ же:
True
False
True
никакого намёка, что в третьей списке все элементы равны
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
никакого намёка, что в третьей списке все элементы равны
Сначала не понял вопрос, думал что нужно получить True.
Вот вариант со знаком равенства:
Python:
is_sorted=lambda x: '=' if len(set(x)) == 1 else all(i < j for i,j in zip(x, x[1:]))
print(is_sorted([1, 2, 3, 4]))
print(is_sorted([14, 2, 3, 4]))
print(is_sorted([14, 14]))
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
спасибо, то, что нужно
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
здравствуйте, подумал, не всегда краткость гут, в данном случае идёт перебор циклом, точнее, несколькими циклами, посему боле рационально:
Код:
def is_sorted(arr):
    p = arr[0]
    for c in arr[1:]:
        if c <= p:
            return False
        p = c
    return True
 
 
def is_all_equal(arr):
    p = arr[0]
    for c in arr[1:]:
        if c != p:
            return False
        p = c
    return True
 
 
def foo(arr):
    if is_all_equal(arr):
        print("=")
    else:
        print(is_sorted(arr))
 
 
print(foo([1, 2, 3]))
print(foo([1, 1, 2, 4, 5, 1]))
print(foo([1, 1, 1]))
ответ выдаст
True
None
False
None
=
None
как избавиться от None, оно печатается три раза?
и разница в двух функциях <= и !=, как их упростить, сделать одной? спасибо
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
как избавиться от None, оно печатается три раза?
Заменить print внутри функции foo на return.
разница в двух функциях <= и !=, как их упростить, сделать одной?
Вот так например:
Python:
def is_sorted(arr):
    if len(set(arr)) == 1:
        return "="
    for i, c in enumerate(arr[1:]):
        if c < arr[i]:
            return False
    return True
 
 
print(is_sorted([1, 2, 3]))
print(is_sorted([1, 1, 2, 4, 5, 1]))
print(is_sorted([1, 1, 1]))
 

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