Запуск двух операторов if в одной и той же функции - PullRequest
0 голосов
/ 06 октября 2018

Я пытаюсь закодировать функцию, в которой заданный угол должен быть меньше 90 градусов и больше 0 градусов.Если угол в радианах, он должен быть меньше чем pi / 2 и больше 0.

Это моя функция:

def is_valid_angle(s:str)-> bool:
    """
    Returns True if and only if s is a valid angle. See the assignment
    description and examples for more information regarding what's valid

    Examples:
    >>> is_valid_angle("85.3d")
    True
    >>> is_valid_angle("85.3.7D")
    False
    >>> is_valid_angle("90d")
    False
    >>> is_valid_angle("0.001r")
    True
    >>> is_valid_angle("1.5R")
    True
    """
    if s[-1]=='r''R':
        if s < (pi/2):
            if s > 0:
                return true
    if s[-1]=='d''D':
            if s < 90:
                if s > 0:
                    return true

Кроме того, я хочу знать, есть ли способсократить два if оператора, используя else.

1 Ответ

0 голосов
/ 07 октября 2018

Вот один из способов сделать это.

Пояснение : try и except проверит, является ли строка кроме последним символом числом или нет.Это делается с помощью s[:-1], который возвращает строку от первого символа до второго последнего символа.Если это не так, например.в 85.3.7D, 85.3.7 не является допустимым числом, оно вернет False.Если это так, то он проверит операторы if, чтобы проверить радианы или градусы и диапазон угла.В зависимости от операторов if будет возвращено соответствующее значение (True/False).

import numpy as np

def is_valid_angle(s):

    try:
        float(s[:-1])
    except ValueError:
        return False

    if (s[-1]=='r' or s[-1]=='R') and (0 < float(s[:-1]) < np.pi/2):
        return True
    elif (s[-1]=='d' or s[-1]=='D') and (0 < float(s[:-1]) < 90):
        return True
    else:
        return False

>>> is_valid_angle("85.3d")
True
>>> is_valid_angle("85.3.7D")
False
>>> is_valid_angle("90d")
False
>>> is_valid_angle("0.001r")
True
>>> is_valid_angle("1.5R")
True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...