Как вернуть True и False? - PullRequest
       6

Как вернуть True и False?

1 голос
/ 01 ноября 2019

Мое задание включает в себя создание алгоритма, который может определить, является ли список восходящим или нет. Если список возрастает без дубликатов в списке, выходные данные должны возвращать True, в противном случае, если список не возрастает или имеет дубликат, он должен возвращать False.

У меня проблемы с выяснением того, какчтобы вернуть «True» или «False» вместо того, чтобы я использовал строку, чтобы распечатать это.

ввод:

def tr1(lis):

  if (len(lis)== len(set(lis)) and (sorted (lis) == lis)) :
    print ("True")
  else:
    print ("False")
tr1([1,2,3,4,4])

вывод:

False

Ответы [ 3 ]

0 голосов
/ 01 ноября 2019

Обнаружение дубликатов обрабатывается во многих других сообщениях: сделать набор из списка и проверить их длину;если есть дубликат, набор будет короче.

Для печати логического значения требуется мышление в логических данных, так же, как вы научились думать в числовых и текстовых данных.

print(sorted(lis) == list)

Вот и весь случай. Положите их вместе:

print(sorted(lis) == list and len(set(lis)) == len(lis) )
0 голосов
/ 01 ноября 2019

Для увеличения или уменьшения теста можно использовать лямбда-выражения Python:

Для уменьшения:

is_decreasing = all(l[i] <= l[i+1] for i in range(len(l)-1))

Для увеличения:

is_increasing = all(l[i] <= l[i+1] for i in range(len(l)-1))

is_decreasing иis_increasing s оба логические.

0 голосов
/ 01 ноября 2019

Обычно для назначения / возврата логических значений вместо этого:

my_result = False

if condition1 and condition2:
    my_result = True
else:
   my_result = False

Вы можете просто сделать:

my_result = condition1 and condition2

Возвращаясь к вашему вопросу создания множеств.

Вы можете создать set из списка (или любого повторяемого объекта), как показано ниже:

your_list = [1,2,3,4]

your_set = set(your_list)

if (len(your_set)==len(your_list):
    pass #All elements are unique

Основное свойство набора состоит в том, что он не имеет дубликатов. Поэтому, если длина вашего списка и вашего набора совпадают, мы можем сделать вывод, что все элементы в вашем списке уникальны.


Вы можете проверить, все ли элементы находятся в порядке возрастания, сначала отсортировав список, а затемсоответствие, если ваш отсортированный список совпадает с исходным списком. В этом случае вы можете сделать вывод, что все элементы в вашем списке расположены в порядке возрастания.

your_list = [1,3,2,4]

sorted_list = sorted(your_list) #[1,2,3,4]

descending_sorted_list = sorted(your_list, reverse=True) #[4,3,2,1]

if (sorted_list == your_list):
    pass #They are in ascending order

Соединение этих двух условий с операторами AND проверяет оба условия.

#This sets a boolean (True/False)
result = (sorted_list == your_list) and (len(your_set)==len(your_list))

Аналогично, в контексте метода вы можете вернуть его напрямую:

return (sorted_list == your_list) and (len(your_set)==len(your_list))
...