0

我正在用 Python 编程。这是我的代码:

def data_exp(nr, nc):
    data=numpy.zeros((nr, nc))
    print data
    for i in range(0, nr):
        for j in range (0, nc):
            data[i, j]=input('Insert values: ')
    numpy.savetxt(str(input('Insert the name of the file (ex: "a.txt"): ')), data)
    return data

问题是这个程序什么也不返回!我在 numpy.savetxt 之后放置的所有内容都被忽略了!有人可以告诉我如何克服这个问题吗?

4

1 回答 1

2

你的问题是使用不当inputinput相当于eval(raw_input())。该eval()调用将尝试在程序中的全局变量和局部变量的上下文中评估您作为 python 源代码输入的文本,在这种情况下,这显然不是您想要做的。我很惊讶您没有收到运行时错误报告您输入的字符串未定义。

尝试raw_input改用:

def data_exp(nr, nc):
    data=numpy.zeros((nr, nc))
    print data
    for i in range(0, nr):
        for j in range (0, nc):
            data[i, j]=input('Insert values: ')
    numpy.savetxt(str(raw_input('Insert the name of the file (ex: "a.txt"): ')), data)
    return data

编辑:

这是上面的代码,在 ipython 会话中为我工作。如果你不能让它工作,还有其他问题:

In [7]: data_exp(2,2)
[[ 0.  0.]
 [ 0.  0.]]
Insert values: 1
Insert values: 2
Insert values: 3
Insert values: 4
Insert the name of the file (ex: "a.txt"): a.txt
Out[7]: 
array([[ 1.,  2.],
       [ 3.,  4.]])

In [8]: data_exp??
Type:       function
Base Class: <type 'function'>
String Form:    <function data_exp at 0x2ad3070>
Namespace:  Interactive
File:       /Users/talonmies/data_exp.py
Definition: data_exp(nr, nc)
Source:
def data_exp(nr, nc):
    data=numpy.zeros((nr, nc))
    print data
    for i in range(0, nr):
        for j in range (0, nc):
            data[i, j]=input('Insert values: ')
    numpy.savetxt(str(raw_input('Insert the name of the file (ex: "a.txt"): ')), data)
    return data

In [9]: _ip.system("cat a.txt")
1.000000000000000000e+00 2.000000000000000000e+00
3.000000000000000000e+00 4.000000000000000000e+00
于 2013-01-02T12:34:36.377 回答