Python '的正确语法是什么;如果';,则为其他情况;?
我是一名新的Python程序员,正在从2.6.4跃升到3.1.1。在我尝试使用“else if”语句之前,一切都很顺利。解释器在“elseif”中的“if”之后给了我一个语法错误,原因我似乎无法理解Python '的正确语法是什么;如果';,则为其他情况;?,python,python-3.x,Python,Python 3.x,我是一名新的Python程序员,正在从2.6.4跃升到3.1.1。在我尝试使用“else if”语句之前,一切都很顺利。解释器在“elseif”中的“if”之后给了我一个语法错误,原因我似乎无法理解 def function(a): if a == '1': print ('1a') else if a == '2' print ('2a') else print ('3a') function(input('input:')) 我可能
def function(a):
if a == '1':
print ('1a')
else if a == '2'
print ('2a')
else print ('3a')
function(input('input:'))
我可能错过了一些非常简单的东西;然而,我自己还没有找到答案 在python中,“elseif”拼写为“elif”。另外,在
elif
和else
后面需要一个冒号
简单问题的简单答案。当我刚开始(在过去的几周里)的时候,我也有同样的问题
因此,您的代码应该是:
def function(a):
if a == '1':
print('1a')
elif a == '2':
print('2a')
else:
print('3a')
function(input('input:'))
你是说?自古以来,Python中if/else if的正确语法是
elif
。顺便说一下,如果你有很多if/else
,你可以使用字典
d={"1":"1a","2":"2a"}
if not a in d: print("3a")
else: print (d[a])
对于msw,使用字典执行函数的示例
def print_one(arg=None):
print "one"
def print_two(num):
print "two %s" % num
execfunctions = { 1 : (print_one, ['**arg'] ) , 2 : (print_two , ['**arg'] )}
try:
execfunctions[1][0]()
except KeyError,e:
print "Invalid option: ",e
try:
execfunctions[2][0]("test")
except KeyError,e:
print "Invalid option: ",e
else:
sys.exit()
下面是对函数的一点重构(它不使用“else”或“elif”): @ghostdog74:Python3需要用括号表示“print” 应更正为:
def function(a):
if a == '1':
print('1a')
elif a == '2':
print('2a')
else:
print('3a')
如您所见,else if应该更改为elif,在“2”之后应该有冒号,否则,else语句后面应该有一个新行,并关闭print和括号之间的空格。可以,但请不要这样做。字典并不能很好地替代
elif
@s.lott,OP的情况很简单。如果他必须检查a的许多值,字典会更整洁。您可能会养成不使用它的习惯,但我一直在使用它,而且我更喜欢这种方法,而不是编写许多if/else代码。见鬼,我甚至用字典来执行函数。@ghostdog:我知道你可以用字典来执行函数,但这个想法让我害怕,就像是计算gotos或将Tcl字符串粘贴在一起并执行它们一样。这是好的做法吗?你能举个例子吗?@msw:这是一个很好的做法。示例:您阅读XML流不是为了一些简单的抓取练习,而是需要对不同的元素标记进行不同的处理。例如,Excel 2007电子表格文件是多个XML文档的压缩包,有些文档非常复杂。每个标记都有一个单独的方法。你可以通过字典发送。没什么可怕的。如果处理
的方法是do\u foo
,则您甚至可以在应用程序启动时动态生成dict。请注意,字典有一个.get
方法,允许您指定默认值。您的第一个示例可以写成print d.get(a,“3a”)
我认为这在2.6.4中不起作用。事实上,Python语法和语义的这个元素在这些版本之间没有变化。可能永远不会。你可以从一个关于python中if/else的好教程开始:不用担心,我们总有一天要学习的。我觉得很奇怪,python将这样一个elphisise放在可读性上,然后使用elkif而不是elkif。我建议始终打开python API手册:重要的链接是Tutorial:Language reference:Library reference:Perl使用相同的关键字,其基本原理是防止您忘记编写前一条else语句而开始编写另一条if语句的事故。显然,这是编写C代码时的一个常见问题。@NateGlenn Perl实际上使用了elsif
,我想Python必须比这更有效。“Elif”似乎起源于C预处理器,它早在Python AFAICT之前就使用了#Elif
。显然,在这种情况下,拥有一个令牌指令是有价值的,因为解析#else if
与#else<理论上甚至可能是if语句的代码>
会使原本非常简单的语法复杂化。我执行了这个示例。条件语法是正确的,但程序无法工作,因为输入被解析为“int”而不是“char”。如果输入“1”,则打印“3a”。这是因为int 1!=字符1。请修复您的示例程序,因为初学者在实际运行时会感到非常困惑。python 3将python 2的print语句替换为一个函数,因此使用了所需的括号,如果您打算使用sys.stdout.writeshould('1','2')
,则op使用的是字符串
def function(a):
if a not in (1, 2):
a = 3
print(str(a) + "a")
def function(a):
if a == '1':
print ('1a')
else if a == '2'
print ('2a')
else print ('3a')
def function(a):
if a == '1':
print('1a')
elif a == '2':
print('2a')
else:
print('3a')