2013-10-31 28 views
0
def row_minimum(x,L): 
    L=L 
    if x=='1': 
    row_minimum1=min(L[0],L[1],L[2],L[3],L[4]) 
    return row_minimum1 
    elif x=='2': 
    row_minimum2=min(L[5],L[6],L[7],L[8],L[9]) 
    return row_minimum2 
    elif x=='3': 
    row_minimum3=min(L[10],L[11],L[12],L[13],L[14]) 
    return row_minimum3 
    table(L) 



    def user_input(y): 
     if y in ['1','2','3','A','B','C','D','E']: 
      condition = False 
     elif y !=['1','2','3','A','B','C','D','E']: 
      condition = True 
      while condition == True: 
       z=input("Enter a row (as a number) or a column (as and uppercase letter):") 
       if z in ['1','2','3','A','B','C','D','E']: 
        condition = False 
      return z 

def menu(a,L): 
    if a==1: 
    display_table(L) 
    elif a==2: 
    x=input("Enter a row (as a number) or a column (as and uppercase letter):") 
    user_input(x) 
    print (user_input(x)) 
    if user_input(x) in ['1','2','3']: 
     mini = row_minimum(x,l) 
     print ("2") 
     print("Minimum is:",row_minimum(x,L)) 

我得到USER_INPUT(X)爲無價值的價值,而不是我希望它從用戶拿這個值比較的if語句和做最小。錯誤而傳遞值在蟒蛇當用戶輸入

+1

[同樣的問題](http://stackoverflow.com/questions/19698225/error-while-passing-the-value-in-python)呢? – devnull

+0

您的'user_input()'函數僅在某些時候返回一個值。例如'user_input('1')'不會返回一個值。因此,如果'x = user_input('1')''x'的值是'None' –

回答

0

您有一個user_input的嵌套定義,第一個不返回任何內容,導致返回None。取出第一個或第二個def

請注意,這是該程序唯一的錯誤。

+0

我改變了定義,但它仍然沒有值 – user2939612

0

你的user_input()功能似乎是一個壞主意。據我所知,它是爲了檢查不良的輸入,並不斷要求輸入,直到它得到良好的輸入。問題是,如果初始輸入不好,它只會返回,如果初始輸入是好的,那麼函數不會返回。

你可以完全擺脫這個函數,因爲無論如何你最終都會檢查輸入。你可以這樣做:

def menu(a,L): 
    if a==1: 
     display_table(L) 
    elif a==2: 
     while True: 
      x=input("Enter a row (as a number) or a column (as and uppercase letter):") 
      print x 
      if x in ['1','2','3']: 
       mini = row_minimum(x,l) 
       print ("2") 
       print("Minimum is:",row_minimum(x,L)) 
       break 
      elif x in ['A','B','C','D','E']: 
       whatever you want to do here 
       break 
0

看起來你在user_input()函數中有一個邏輯問題。如果我理解它是正確的,那麼您正在嘗試檢查y是否是行/列名之一,並在此情況下將條件設置爲False。否則(如果它不在允許的字符列表中),您希望將條件設置爲True,並重新提示用戶輸入正確的內容,直到她爲您提供所需的值。 如果是這樣,你最好檢查是否它不在列表中。然而,你的代碼會檢查y是否不是LIST本身:y!= ['1','2','3','A','B','C','D','E']] 。即使用戶給你一個很好的價值,說'B'它仍然不等於字符串['1','2','3','A','B','C',' d」,‘E’],它是在該列表中(如果你重寫功能s what you should be checking for). I think, it盡力幫助,使之像:

def user_input(y): 
    if y in ['1','2','3','A','B','C','D','E']: 
     condition = False 
    else: 
     condition = True 
     while condition == True: 
      z=input("Enter a row (as a number) or a column (as and uppercase letter):") 
      if z in ['1','2','3','A','B','C','D','E']: 
       condition = False 
     return z 

你也可以使用Python風格指南進行實驗,使這個代碼看起來更好;)