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 に答える