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あり、最初の定義は何も返さないため、None返されます。1枚目か2枚目を取り出しdefます。

このプログラムの問題点はこれだけではないことに注意してください。

于 2013-10-31T04:27:52.670 に答える
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 に答える