Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python '的正确语法是什么;如果';,则为其他情况;?_Python_Python 3.x - Fatal编程技术网

Python '的正确语法是什么;如果';,则为其他情况;?

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:')) 我可能

我是一名新的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:'))
我可能错过了一些非常简单的东西;然而,我自己还没有找到答案

在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')