私は巨大な if elif else ステートメントを持っていますが、うまく機能します...それらは非常に不自然に見え、必要な数を2倍にしようとしています。基本的に、グラフの x 値の数に対するユーザー入力を取得し、データ ソーターを介して送信し、グラフ化します。簡単にするために、x=1 (最小) と x=6 (最大) の値のみを入れていますが、「y はいくつですか?」を追加したいと思います。しかし、それはかさばりすぎて混乱を招くのではないかと心配しています。
これを要約する方法はありますか?
コード:
howManyX = int(raw_input('Input number of x-values for this graph: '))
if howManyX == 1:
x1 = int(raw_input("Input column number for x1-value: "))
x2 = 1
x3 = 1
x4 = 1
x5 = 1
x6 = 1
elif howManyX == 6:
x1 = int(raw_input("Input column number for x1-value: "))
x2 = int(raw_input("Input column number for x2-value: "))
x3 = int(raw_input("Input column number for x3-value: "))
x4 = int(raw_input("Input column number for x4-value: "))
x5 = int(raw_input("Input column number for x5-value: "))
x6 = int(raw_input("Input column number for x6-value: "))
以下のこの部分は、x1 が x(n) から 6 であることを除いて同じです。コードはすべて正しいです。x1 を x(1-6) に変更するだけです。
if x1 == 0:
x1a = sheet.col_values(x1)
x1b = [i for i in x1a if i != '']
x1c = [i for i in x1b if type(i) == float][1:]
x1Axis = [datetime.strptime(str(int(d)), '%Y%m%d') for d in x1c]
elif x1 == 31:
x1a = sheet.col_values(x1)
clear()
print "\n\n\n1: Top"
print "2. Bottom"
is_valid = 0
while not is_valid :
try :
choice = int ( raw_input('Enter your choice [1 or 2] : ') )
is_valid = 1 ## set it to 1 to validate input and to terminate the while..not loop
except ValueError, e :
print ("'%s' is not a valid integer." % e.args[0].split(": ")[1])
if choice == 1:
x1Axis = filter(None, [i for i, j in zip(x1a, x1a[1:] + ['']) if j != ''])[1:]
elif choice == 2:
x1Axis = filter(None, [i for i, j in zip(x1a, x1a[1:] + ['']) if j == ''])[2:]
else:
print ("Invalid number. Try again...")
else:
x1a = sheet.col_values(x1)
x1Axis = filter(None, [i for i, j in zip(x1a, x1a[1:] + ['']) if j == ''])[2:]
多くのように見えますが、それは私のコードが乱雑である可能性があります。単純な for ループが必要だと思いますが、圧倒されてどこから始めればよいかわかりません。すべてがうまくいっています。乱雑に見えるだけ