修改了Python局部变量但最后没有显示

use*_*092 1 python if-statement local-variables

a = 'file'
b = 'file'
c = 4
d = 4
e = 5
f = 6

def sim(a,b,c,d,e,f):
    s = 0
    if( a == b):
        s+=1
        print(s)
    if( c==d ):
        s+=1
        print(s)
    if (e == d):
        s+=1
        print(s)
    score = s/3
    return score

>>> sim(a,b,c,d,e,f)
Run Code Online (Sandbox Code Playgroud)

以上输出是:

1
2
0
Run Code Online (Sandbox Code Playgroud)

这意味着虽然s首先更新了if子句,当它在score变量中被访问时,它具有s的旧值,即0.有人可以解释如何纠正这个吗?为什么没有显示s的正确值来得分变量

Bri*_*ien 7

0正在打印不是s的值.正在打印的是函数的返回值.Python 2默认使用整数除法,因此您打印的值为s/3,即0.

它正在打印函数的返回值,因为您正在处理shell.如果您将其作为单独的程序运行,则不会打印它.

你的情况与此非常相似:

>>> def f(x):
    return x / 3

>>> f(2)
0
Run Code Online (Sandbox Code Playgroud)

您可以看到,正在打印函数返回的值.另外,将2除以3得到0和整数除法.