Замена оператора if - PullRequest
       2

Замена оператора if

0 голосов
/ 20 сентября 2018

Я не могу использовать операторы if и циклы в своем назначении, поэтому мне было интересно, как бы я переписал эту строку:

  if (not float(gravity).is_integer()):

Это просто проверка, является ли гравитация плавающей или целой, такон может передавать больше кода.

Ответы [ 3 ]

0 голосов
/ 20 сентября 2018

Моя догадка состоит в том, что задание пытается научить вас парадигме «Просить прощения, а не разрешения» .

В этом случае:

try:
    gravity = float(gravity)
    # Do floaty gravity stuff
except (TypeError, ValueError):
    gravity = some_default_value_you_can_handle_some_other_way
0 голосов
/ 20 сентября 2018

Вы можете использовать assert в сочетании с блоком try:

try:
    assert(not float(gravity).is_integer())
    print("evaluated to true")
except:
    print("evaluated to false")

Замените операторы печати кодом, который вы хотите выполнить, если он оценивается как true или false.

0 голосов
/ 20 сентября 2018

Вы можете использовать быстрые операторы для достижения логического потока без оператора if.Например,

float(gravity).is_integer() and do_stuff()

Вторая часть будет выполнена, только если первая часть верна.

В качестве альтернативы вы можете использовать

float(gravity).is_integer() or do_stuff()

, где вторая часть будет выполняться только еслипервая часть неверна.

ОБНОВЛЕНИЕ

Я только что прочитал комментарий о том, как функция просто предназначена для оценки, если две стороны дают целочисленную гипотенузу.Поэтому, если я не пойму, что вы ищете здесь, то в этом случае весь смысл в том, что вам не нужно утверждение if, чтобы решить, следует ли вам затем явно возвращать True или False самостоятельно;вы можете просто вернуть результат оценки is_integer() напрямую, так как в любом случае это будет либо True, либо False.

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