【问题标题】:Strange output of a very simple code?一个非常简单的代码的奇怪输出?
【发布时间】:2014-06-07 16:57:31
【问题描述】:

我对 python 很陌生,但我发现这很奇怪: 代码:我正在输入 Sagemathcloud 的 sageworksheet 文件:

x=y+1
def f(x):
    return y
x=-1
print(x)
print(f(x))

作为输出,我不断得到 7 或有时 49,无论我输入什么 x 值,都是相当随机的数字。请问有什么见解吗?

附:我试图让它看起来像一个代码,但我不确定如何做到这一点,例如,def 在我输入后的下一个 lmine 中:x=y+1。

【问题讨论】:

    标签: function math sage


    【解决方案1】:

    如果这是您拥有的唯一代码,则 y 在使用之前未定义。 y 将采用以前在它正在使用的内存空间中的值 - 这甚至可能不是导致您正在经历的数字随机性的 int 值。

    【讨论】:

    • 那为什么下面没有问题呢? x 和 y 没有先验定义? {z=[x,y] def f(z): return x+y x=2 y=6 print(f(z)) x=2 y=6}
    • 似乎 sagemathcloud 本身出现了某种疯狂的错误,因为我刚刚做到了,一切正常:y=x-1 def f(x): return y x=8 print(f(x))
    • 我不确定,但是这段代码是 python,x = y + 1 会抛出一个运行时错误,所以 SageMathCloud 正在做一些事情来纠正这个问题,而且这是不可预测的。
    • 有趣的是,Sage 只纠正了 z=[x,y] 的情况,其中 x 和 y 没有定义,但是当我用 y=x 键入程序时它没有做任何这样的纠正-1.
    • 另外,以下是给我一个错误:` z=[x,y] w=[a,b] def f(z,w): return x+b x=3 y=7 a=5 b=6 打印(f(z,w)) `
    猜你喜欢
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多