将字符串更改为函数内部变量的整数,Python

时间:2014-07-26 20:47:59

标签: python string integer

为什么assign()函数不会将字符串更改为整数? assign函数不返回我在if语句中设置的值!

p1 = raw_input("Player 1 ?")
p2 = raw_input("Player 2 ?")

def assign(n):

    if n == "r":
        return (1)
    elif n == "s":
        n = 2
    elif n == "p":
        n = 3
    else:
        print "Wrong input!"
    return n

assign(p1)
assign(p2)
print p1
print p2

if p1 - p2 == 0:
    print "Tie!"
elif (p1 - p2) / 2 != 0:
    print " Player 1 is winner!"
else:
    print" Player 2 is the winner!"

1 个答案:

答案 0 :(得分:1)

函数内的变量n与作为参数提供的表达式(或变量)的 distinct 不同。因此,在函数内部分配n影响外部的任何变量。 (这是因为Python 按引用调用。)

相反,请使用返回值,例如

def classifyInput(n):    
    if n == "r":
        return 1
    elif n == "s":
        return 2
    elif n == "p":
        return 3
    else:
        print "Wrong input!"
        # implicit: return None

p1_inp = raw_input("Player 1 ?")
p1 = classifyInput(p1_inp)