2017-05-02 9 views
0

私は、ユーザが指定したデータファイルを読み込んでプロットを作成するために、以下の最小限のコードを用意しました。プロットでは、xyというラベルもユーザーが指定します。 splitを使用して複数の入力として、それらを供給しながらPythonでの複数の文字列入力

# ReadFileAndPlot.py 
import numpy as np 
import pylab as pl 
# Use numpy to load the data contained in the file 
datafile=raw_input('Enter data filename\n') 
print 'Data filename :',datafile 

x,y=map(string,raw_input('Enter x and y axis labels\n').split()) 
#x='Current'; y='Voltage' 

data = np.loadtxt(datafile) 

# plot the first column as x, and second column as y 
pl.plot(data[:,0], data[:,1], 'ro') 
pl.xlabel(x) 
pl.ylabel(y) 
pl.xlim(0.0, 10.) 
pl.show() 

はしかし、文字列は認識されません。だから私はメッセージを受け取ります:NameError: name 'string' is not defined [intと変わりません]。

splitなどを使用してこれを修正する方法はありますか?

+0

は、代わりに '' STRING' – kuro

答えて

0

あなたはマップを使用する必要はありません。単純に分割してxとyにタプルを割り当てます。しかし、それはユーザーが有効な入力を与えていることを保証するものではありません。 2つ以上の単語がある場合、それは壊れます。

while True: 
    try: 
     x, y = raw_input('Enter x and y axis labels\n').split() 
     break 
    except ValueError: 
     print('Invalid input.') 
+0

あなたは 'しばらくトゥルー使用して...ここに' valid'のものを必要としないのstr'使用する:あなたは有効な入力を持っている 'と' break'を.. –

+0

@JonClements次に、xとyをループの外側に定義する必要があります。そうしないと、refrenceエラーが発生します。 'not(xとy)while: ' –

+0

それはそうではありません。ループは有効な入力があるまで終了せず、xとyはバインドされます - https://gist.github.com/anonymous/e777cfef18aa6f83e9a64f0ff81f625b –

0

使用strの文字列の代わりに:

x,y=map(str, raw_input('Enter x and y axis labels\n').split()) 
関連する問題