2012-10-28 49 views
0

說我必須得到用戶輸入的行數和列數,並詢問他們想要他們的列如何對齊。對於這個例子來說,他們希望它有正確的理由。我將如何去做這件事?用對齊方式創建python行vs列表

numofrows = rawinput('# rows:') 
numofcolumns = rawinput('# columns:') 
for x in range(numberofcolumns): 
    justify = rawinput('Do you want left, center, or right?') 

回答

1

看來,你是問如何申請理由設置爲單獨的列,其在數量上numofcolumns。你最簡單的修改程序那麼遠是糾正rawinputraw_input,並添加一列數到最後提示,並以列表保存結果:

nrows = int(raw_input('# rows: ')) 
ncolumns = int(raw_input('# columns: ')) 
justify = [] 
for x in range(ncolumns): 
    j = raw_input('Select left, center, or right justification in column '+str(x+1)+' by L,C,R: ') 
    justify.append(j.upper()) 
print justify 

例如,ncolumns = 4,四個問題像

Select left, center, or right justification in column 1 by L,C,R: 

會出現,如果用戶用字母L,R,C和L響應反過來,大寫或小寫,print語句將打印['L', 'R', 'C', 'L']

當然這樣的界面使用起來很笨拙;一方面,如果用戶在輸入十幾個其他規格後發現第四列規格中有錯誤,則需要全部開始。另一方面,該程序很難從腳本中使用。下面顯示的示例代碼沒有解決後面的問題,但確實可以讓用戶輕鬆地按任意順序進行列對齊設置。此代碼顯示一條消息Select column justification settings, then click Go,並放置一個標有L,C,R的單選按鈕的網格。在用戶滿意對齊設置並單擊Go後,程序將打印一個列表,如[1,1,1,0,2 ],表示C,C,C,L,R的選擇,如下圖所示。 grid of radio buttons 此演示程序不輸入nrowsncolumns,但設置ncolumns=5

#!/usr/bin/env python 
# Set up a simple horizontal menu with some editable radio buttons 
import gtk 
def bcallback(w, i, j):   # Radio button callback 
    settings[i] = j 
# create set of radio buttons 
ncolumns = 5 
W = gtk.Window() 
W.connect('destroy', gtk.main_quit) 
W.set_title('Column-justification settings') 
box = gtk.HBox() 
W.add(box) 

for i in range(ncolumns): 
    col = gtk.VBox() 
    b = gtk.RadioButton(None, 'L') 
    rb = [b, gtk.RadioButton(b, 'C'), gtk.RadioButton(b, 'R')] 
    for j,b in enumerate(rb): 
     col.pack_start(b) 
     b.connect('toggled', bcallback, i, j) 
    box.pack_start(col) 

b = gtk.Button(None, 'Go') 
b.connect('button-press-event', gtk.main_quit) 
box.pack_start(b) 
W.show_all()  # Make menu available for showing 
settings = [0 for i in range(ncolumns)] 
print 'Select column justification settings, then click Go' 
gtk.main() 
print settings