Skip to main content
 首页 » 编程设计

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

2025年05月04日10linjiqin

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) 

上面的输出是:

1 
2 
0 

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

请您参考如下方法:

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

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

您的情况与此非常相似:

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

可以看到,正在打印函数返回的值。此外,2 除以 3 得到整数除法 0。