2016-10-16 2 views
0

**kwargs으로 함수를 만들어야합니다.이 값은 사전에 숫자 값을 두 배로 늘려야합니다. 숫자 값만!** kwargs를 사용하여 Python으로 멈춤

내 코드는 다음과 같습니다 :이 할 수

fmm= {'zbk': 30, 
     'moartea': 78, 
     'Cox': 'sweet', 
     'fanina': 'Alex', 
     'rex': 24 
     } 

def my_func(**kwargs): 
    for k,v in fmm.items(): 
    print(v*2) 
my_func() 
+0

왜 ** kwargs를 사용해야합니까? –

+0

사전에서 그 값을 두 배로해야합니까? 또한 try ... except ... except ... 내에서 type() 또는 int()를 사용하여 int 데이터 유형에 대해 v를 테스트합니다. – rocksteady

+0

이 문제를 해결하는 방법을 알지 못합니다. – javralea

답변

3

한 가지 방법 : 내가 직접 인수를 변경 할 수 없습니다

fmm= {'zbk': 30, 
     'moartea': 78, 
     'Cox': 'sweet', 
     'fanina': 'Alex', 
     'rex': 24 
     } 

def my_func(**kwargs): 

    for k,v in kwargs.items(): 
     if isinstance(v,int) or isinstance(v,float): 
      kwargs[k] *= 2 
    return kwargs 

fmm = my_func(**fmm) 
print(fmm) 

참고; 파이썬은 전달 된 dict의 복사본을 만듭니다.

+0

해결책 주셔서 대단히 감사합니다. – javralea

+0

왜 'int'를 확인해야합니까? 부동 소수점은'* 2 '를 지원하며 문자열 (및 다른 일부 객체들)에 대해서도 완벽하게 유효합니다. 객체가'__mul__'을 지원하는지 점검 할 가치가 있습니다. – cdarke

+0

OP는 "숫자 값을 두 배로"요청했습니다. 음, 수레도 점검해야합니다. 그러나 문자열은 범위를 벗어납니다. –

1

왜 이중 포인터입니까? 그것 없이도 완벽하게 할 수 있습니다.

fmm= {'zbk': 30, 
     'moartea': 78, 
     'Cox': 'sweet', 
     'fanina': 'Alex', 
     'rex': 24 
     } 

def my_func(): 
    for k,v in fmm.items(): 
    print(v*2) 
my_func() 
+0

이중 포인터가 아닙니다. Python! = C –

+1

이것은 아마도 키워드 인수 압축 풀기에 대한 자습서 연습 일 것입니다. – cdarke

관련 문제