2015-09-07 79 views
-2
def print_two(*args): 
    arg1, arg2 = args 
    print ("arg1: %r, arg2: %r" % arg1, arg2) 

def print_two_again(arg1, arg2): 

def print_one (arg1): 
    print ("arg1: %r" % arg1) 

def print_none(): 
    print ("I got nothing.") 

print_two ("Zed", "Shaw") 
print_two_again ("Zed", "Shaw") 
print_one ("First!") 
print_none() 

文件 “ex18.py”,第7行 高清print_one(ARG1): ^ IdentationError:预期的那样缩进块学习Python艰难的历程 - ex18

  • 我忘了在输入在print_two_again争论......应该是print ("arg1: %r, arg2: %r" % (arg1, arg2))"
+1

方法/函数定义不能有空的主体,但'print_two_again()'是空的。添加['pass'](https://docs.python.org/3/reference/simple_stmts.html#the-pass-statement)。如果这有一个真正的问题,它也会很好。 – dhke

+1

不要添加问题的答案 - 如果您现在有答案,请自己写出答案*。 – jonrsharpe

回答

1

先上去,在那里你格式化字符串与一个以上的参数(其实,我这样做即使只有一个 argument),你应该在参数周围加括号。所以改变:

print ("arg1: %r, arg2: %r" % arg1, arg2) 

到:

print ("arg1: %r, arg2: %r" % (arg1, arg2)) 

其次,如果你想有一个函数(或循环或需要声明一些其他的东西)做什么,你应该一般pass关键字,例如如:

if pi == e: 
    pass 

然而,在这种情况下,如果你真的回到这本书,你会看到print_two_again(),从而实现:

def print_two_again(arg1, arg2): 
    print "arg1: %r, arg2: %r" % (arg1, arg2) 

换句话说,您在抄录代码时似乎错过了一条线。

+0

谢谢!你是对的。我没有忘记在函数print_two_again中添加参数。我不知道我是如何设法做到这一点的,可能有点令人困惑,看到所有的印刷品。 ;) – saltcracker