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) 的值设置为 none,而是希望它从用户那里获取值并在 if 语句中进行比较并做最小值。

4

3 回答 3

0

看起来您在 user_input() 函数中存在逻辑问题。如果我理解正确,您正在尝试检查 y 是否是行/列名称之一,并在这种情况下将条件设置为 False。否则(如果它不在您的允许字符列表中),您希望将条件设置为 True 并重新提示用户正确输入,直到她为您提供所需的值。如果是这样,你最好检查 y 如果它不在列表中。但是,您的代码会检查 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 样式指南并使此代码看起来更好;)

于 2013-10-31T05:16:36.363 回答
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
于 2013-10-31T05:03:48.943 回答
0

你有一个嵌套的定义,user_input第一个没有返回任何东西,导致None被返回。取出第一个或第二个def

请注意,这远不是这个程序唯一的错误。

于 2013-10-31T04:27:52.670 回答