[Python] 파이썬 - 0.0이 아닌 명령문


Answers

"이 매개 변수가 설정되지 않았습니다."라는 신호를 보내지 않으므로 None 키워드를 사용하여 확인해야합니다.

def square(x=None):
    if x is None:
        print "you have not entered x"
    else:
        y=x**2
        return y

유형 검사는 복잡하지 않고 오류가 발생하기 쉽습니다. int 아닌 모든 가능한 입력 유형 을 검사해야하기 때문입니다.

Question

Python 2.7 에서 if not statement에 관한 질문이 있습니다.

일부 코드를 작성하고 선언문 if not 사용했습니다. 필자가 작성한 코드의 일부에서는 if not 키워드가 if not 명령문을 포함하는 함수를 참조하여 선택적 키워드가 입력되었는지 여부를 확인합니다.

0.0 이 키워드의 값일 때를 제외하고는 정상적으로 작동합니다. 0 은 '아닌'것으로 간주되는 이유 중 하나이기 때문에이 점을 이해합니다. 내 코드는 너무 길기 때문에 게시 할 수는 없지만 유사합니다 (단순화되었지만).

def square(x=None):
    if not x:
        print "you have not entered x"
    else:
        y=x**2
        return y

list=[1, 3, 0 ,9]
output=[]


for item in list:
    y=square(item)
    output.append(y)

print output

그러나,이 경우 나는 왼쪽으로있어 :

you have not entered x
[1, 9, None, 81]    

내가 얻고 싶은 곳 :

[1, 9, 0, 81]

위의 예에서는 목록 이해를 사용할 수 있지만 함수를 사용하여 원하는 출력을 얻으 려한다면 어떻게해야할까요?

내가 가진 한 가지 생각은 :

def square(x=None):
    if not x and not str(x).isdigit():
        print "you have not entered x"
    else:
        y=x**2
        return y

list=[1, 3, 0 ,9]
output=[]


for item in list:
    y=square(item)
    output.append(y)

print output

이 방법이 효과적이지만 약간의 어색한 방법으로 보입니다. 누구든지 좋은 방법이 있다면 나는 매우 감사 할 것입니다.




U는 여기서 예외를 처리 할 수 ​​있습니다. 이런 식으로 코드 만들기

def square(x):
    if not x:
        print "you have not entered x"
    else:
        try:
            int(y)=x**2
            return y
        except TypeError:
            pass


list=[1, 3, 0 ,9]
output=[]



내가 이해하는 한, 입력이없는 경우를 포착하고 싶습니다.

if x is None:
    ...

그리고 그것이 숫자가 아닌 경우. 두 번째로는 꽤 많은 문제가 생길 것입니다. 왜냐하면 앞으로 numpy-ndarrays를 허용하거나 다른 것을 허용하기를 원하기 때문에 일반적으로 다른 클래스를 제외하지 말고 그냥 허용하는 것이 좋습니다. intfloat 다음 사용

if isinstance(x, (int, float, ...)):
    ...

... 는 다른 허용되는 클래스 (아마 Decimal 또는 Fractions )를 나타냅니다.

그래서 다음과 같이 작성할 수 있습니다.

if x is not None and isinstance(x, (int, float)):
     return x**2
else:
     print "you have not entered x"

Noneintfloat 가 아니기 때문에 첫 번째 조건을 생략하고 다음과 같이 작성할 수도 있습니다.

if isinstance(x, (int, float)):
     ...