Когда я изменяю True на False в первом коде, мой вывод остается тем же. Почему это? - PullRequest
0 голосов
/ 03 октября 2019

Мой код:

liste = ["345","sadas","324a","14","zxc"]

for i in liste:
    try:
        int(i) == True  #(make it false for example)
        print(i)
    except:
        pass



for i in liste:
    try:
         i = int(i)
        print(i)
    except:
        pass

вывод:

345

14

Здесь, как вы можете видеть, есть два разных кода, и вопрос заключается только в том, чтобы писать цифры, а не буквы. (Используяпримерка за исключением). Но мой вопрос: когда я изменяю True на False в первом коде, мой вывод остается тем же. Почему это?

Ответы [ 2 ]

0 голосов
/ 03 октября 2019

когда я изменяю значение True на False в первом коде, мой вывод остается прежним

Поскольку вы ничего не делаете с этим результатом по сравнению с

if int(i) == True:
    print(i)

Или просто

if int(i):
    print(i)

Но более уместным будет

if i.isdigit():
    print(i)
0 голосов
/ 03 октября 2019

Это:

    int(i) == True  #(make it false for example)

сначала попытайтесь сделать int из i, и, если операция завершится успешно, сравните ее с True, затем отбросьте результат теста. Таким образом, все сравнение в конечном итоге оказывается неиспользуемым ((функционально говоря, код все еще выполняется), и его можно также заменить просто

`int(i)`

Конечно, поскольку результат сравненияЕсли отбросить, вы можете проверить любое значение, сравнимое с int (другое int, число с плавающей запятой, bool и т. д.), это абсолютно ничего не изменит.

Примечание: this:

try:
   something()
except:
    pass

- это чистое зло - оно ловит абсолютно все (включая SystemExit) и игнорирует его. Я понимаю, что это всего лишь фрагмент кода быстрого теста, но сделайте себе одолжение и никогда не делайте этогов реальном коде - всегда указывайте точное исключение (я), которое вы ожидаете и можете обработать в этот момент в коде, и если вы хотите их игнорировать, хотя бы зарегистрируйте их где-нибудь, чтобы вы знали, что действительно происходит в вашем коде.

...