我正在用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之后的所有内容!谁能告诉我如何克服这个问题?
答案 0 :(得分:2)
您的问题是input
的使用不当。 input
相当于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