2016-09-08 1 views
1

안녕하세요 저는 함수, 사전 3 개 및 선택적 인수가 포함 된 코드를 작성하도록하는 연습 문제가 있습니다. 나는 그러나 내 코드를 실행하려고 할 때마다 내 컴파일러가 1 개 필요한 위치 인수 없음을 명시,컴파일러가 Python의 선택적 인수를 이해하지 못합니다.

def make_album(artist_name, album_title, num_tracks): 

    """Return artist and album title name.""" 
    CD1 = {'sonic': artist_name, 'his world': album_title} 
    CD2 = {'shadow': artist_name, 'all hail shadow': album_title} 
    CD3 = {'silver': artist_name, 'dream of an absolution': album_title} 
    if num_tracks: 
     CD = artist_name + ' ' + album_title + ' ' + num_tracks 
    else: 
     CD = artist_name + ' ' + album_title 
    return CD.title() 

disc = make_album('sonic', 'his world', '15') 
print(disc) 

disc = make_album('shadow', 'all hail shadow') 
print(disc) 

disc = make_album('silver', 'dream of an absolution') 
print(disc) 

: 'num_tracks'나의 두 번째 인쇄 문을

여기 내 코드입니다.

하지만 코드를 잘못 작성하고 컴파일러에서 if-else 문을 읽지 않는 한 내 if-else 문으로 인해 문제가 발생하지 않아야합니다. 어떤 의견이라도 대단히 감사 드리며, 시간 내 주셔서 감사합니다.

답변

2

당신은 default for the argument to be optional과 기능을 def하는 예컨대 : 기본없이

# num_tracks=None means if not provided, num_tracks is set to None 
def make_album(artist_name, album_title, num_tracks=None): 
    ... 
    if num_tracks is not None: 
     CD = artist_name + ' ' + album_title + ' ' + num_tracks 
    else: 
     CD = artist_name + ' ' + album_title 

인수는 항상 필요합니다 필요합니다.

+0

감사합니다. 선택형 인수에 기본값을 추가했습니다. 내 코드를 실행할 때 문법 오류가 더 이상 나타나지 않지만 두 번째 및 세 번째 인쇄 기능에 두 번째 및 세 번째 인쇄 기능에 포함하지 않아도 '15'는 여전히 두 번째 및 세 번째 인쇄 문에 표시됩니다. if-else 문을 사용하여 num_track을 선택적으로 만들 수 있습니다. 누구든지 내가 잘못 갔다는 생각을 가지고 있니? – PhantomDiclonius

+1

@PhantomDiclonius : (지금 삭제 된) 다른 대답이했던 것처럼 num_tracks = "15"'로 기본값을 설정 했습니까? 그것은 그 원인이 될 것입니다. 'num_tracks = None' ("not not/not set"에 대한 표준 센티널)을 만들고 num_tracks가 None이 아닌지에 대한 검사를 확인하십시오. 따라서 실제 값이 주어질 때만 사용됩니다. – ShadowRanger

+0

예 처음에는 num_tracks = '15 '를 가졌습니다. 그런 다음 당신이 말했던 것처럼 아무에게도 설정하지 않았습니다. 감사합니다. :) – PhantomDiclonius

관련 문제