-7

Python の学校の課題に問題があり、何が間違っているのかわかりません。定義されていないグローバル名を取得するか、何かを変更すると、さまざまなシンタックス エラーが発生します。私が間違っていることを誰かが助けてくれることを願っています。

割り当ての詳細のイメージを次に示します。 ここに画像の説明を入力

def main():
  x = int(input("Give me integer #1: "))
  y = int(input("Give me integer #2: "))
  z = input("Give me a string: ")
  print("min:",min(x,y))
  print("max:",max(x,y))
  print("equal:",equal(x,y))
  print("is_even:",is_even(x))
  print("is_odd:",is_odd(x))
  print("format_dollar:",format_dollar(x))
  print("lab_grade:",lab_grade(x))
  print("is_unlucky:",is_unlucky(x))
  print("is_lucky:",is_lucky(x))
  print("pluralize:",pluralize(z)) 


#1 This function will figure out the min of 2 integer arguments and return the smaller one
def min(num1,num2):
    if num1 >= num2: return num1
    else: return num2

#2 This function will figure out the max of 2 integer arguments and return the smaller one
def max(num1,num2):
    if num1 <= num2: return num1
    else: return num2

#3 This function will figure out if the 2 numbers are equal
def equal(x,y):
    if x == y: True
    else: False

#4 This function will find out if the number is even
def is_even(num1,num2):
    is_even = x
    if x % 2 == 0: return ("True")
    else: return ("False")

#5 This function will find out if the number is odd
def is_odd(num1,num2):
    is_odd = x
    if x % 2 == 1: return ("True")
    else: return even

#6 This function will format the returned string
def format_dollar(num1,num2):
    x**('.2f')

#7 This function will fin out a lab grade
def lab_grade(x):
    lab_grade = int(raw_input("Enter the student's grade: "))
    if grade >= 90:
        return 'A'
    if grade >= 80:
        return 'B'
    if grade >= 70:

       return 'C'
    if grade >= 60:
        return 'D'
    else:
        return 'F'
#8 This will determine if the function is un_lucky
def is_unlucky(x):
    if x == 4:
        return ('True')
    if x == 13:
        return ('True')
    if x == 7:
        return ('True')
    else: ('False')
    print()


#9 This will determine if the function is lucky
def is_lucky(x):
    if x == 3:
        return ('True')
    if x == 4:
        return ('True')
    if x == 8:
        return ('True')
    if x == 7:
        return ('True')
    else:
        return ('False')


    print('')

#10 This function will pluralize
def pluralize(z):
    if not z:
        return plural
    print('')
main()
4

3 に答える 3

3

あなたis_even()is_odd()関数が見えるevenly-odd..

まあ、それはただの冗談でした..申し訳ありません..しかし、あなたは2つの異なるパラメータを取ってnum1いますが、未知の変数に割り当てられnum2た変数を使用していますが、そこで何をしているのかわかりません??xis_even

于 2012-09-24T18:17:27.133 に答える
0

推測しなければならないのですが、あなたがしたことは、一度に10個の関数すべてを記述し、それが機能するかどうかを確認するために混乱全体を引き起こしたことだと思います。頭をぶつけて最初の30分後、奇跡によって煙が消えるかどうかを確認するために、ランダムに物事を変更しているところにたどり着きました。

これは非常に基本的な課題のように思われるので、テスト駆動開発の使用などを提案することは控えますが、より段階的なアプローチをとることで、生活をはるかに楽にすることができます。

まず、メインから始めて実行し、次のようなエラーを生成せずにすべての関数呼び出しが機能するようにします。

def main():
    x = int(input("Give me integer #1: "))
    y = int(input("Give me integer #2: "))
    z = input("Give me a string: ")
    print("min:", min(x, y))
    print("max:", max(x, y))
    print("equal:", equal(x, y))
    print("is_even:", is_even(x))
    print("is_odd:", is_odd(x))
    print("format_dollar:", format_dollar(x))
    print("lab_grade:", lab_grade(x))
    print("is_unlucky:", is_unlucky(x))
    print("is_lucky:", is_lucky(x))
    print("pluralize:", pluralize(z))

def min(x, y):
    return x

def max(x, y):
    return x

# Fill in all the other functions here in the same fashion.

main()

すべての関数について同じことを行い、渡された最初のパラメーターを返すだけです。取得したら、エラーを生成せずにコードを実行できるようにします。正しい結果を返すために、それぞれを修正する関数ごとに機能を実行します。あなたの人生をさらに楽にする秘訣は、main()を(テストのためだけに)ハックして次のようにすることです。

def main():
    #x = int(input("Give me integer #1: "))
    #y = int(input("Give me integer #2: "))
    #z = input("Give me a string: ")
    x = 5
    y = 8
    z = 'foobar'

    print("min:", min(x, y))
    print("max:", max(x, y))
    print("equal:", equal(x, y))
    print("is_even:", is_even(x))
    print("is_odd:", is_odd(x))
    print("format_dollar:", format_dollar(x))
    print("lab_grade:", lab_grade(x))
    print("is_unlucky:", is_unlucky(x))
    print("is_lucky:", is_lucky(x))
    print("pluralize:", pluralize(z))

このようにして、毎回入力を入力しなくても、プログラムをすばやく実行できます。正常に機能するようになったら、入力の前からコメントを削除し、ハードコードされた値を削除して、main()を変更せずに入力できます。

True / Falseを返す場合は、文字列表現ではなく、実際のブール値TrueおよびFalseを使用する必要があります。また、割り当てで特にelifが呼び出されたため、コードのように目立たないifの束ではなく、if / elif/elseステートメントを使用する必要があります。

#9 This will determine if the function is lucky
#  x = number to test
# returns True if number is lucky, else False
def is_lucky(x):
    if x == 3:
        return True
    elif x == 4:
        return True
    elif x == 8:
        return True
    elif x == 7:
        return True
    else:
        return False
于 2012-09-24T19:32:14.893 に答える
0

からでも変更:

def is_even(num1,num2):
    is_even = x
    if x % 2 == 0: return ("True")
    else: return ("False")

に:

def is_even(num1):
    if num1 % 2 == 0: 
        return ("True")
    else: 
        return ("False")

どうして?:

  • 必要な入力は1つだけです
  • グローバルxを使用しないでください
  • 関数であるis_evenを値に設定しないでください。

は奇妙で、format_dollarも同様の問題を抱えています。

于 2012-09-24T19:00:58.860 に答える