-1

これらの関数を組み合わせて Python コードを短くすることはできますか? 簡単なプログラムを作成しています!

関数は次のとおりです。

def try1():
        try:
            num1=input("Enter num 1: ")
            return num1
        except ValueError:
            print("incorrect!")
            return #value

def try2():
        try:
            num2=input("Enter num 2: ")
            return num2
        except ValueError:
            print ("incorrect!")
            return #value

def try3():
        try:
            num3=input("Enter num 3: ")
            return num3
        except ValueError:
            print ("incorrect!")
            return #value

def try4():
        try:
            num4=input("Enter num 4: ")
            return num4
        except ValueError:
            print ("incorrect!")
            return #value

以下に提案と回答を投稿してください。

私の評判からわかるように、私は Stackoverflow で親切な人を見つけたいと思っている新しいプログラマーです。

4

4 に答える 4

3

(この回答は、アクセスできなくなったが、別の問題を示した質問の元のリビジョンに基づいています。有効な番号が入力されるまで、ユーザーは質問され続けます。コードはスキルゲームシステムまたは何かを示していたので、それはなぜ私の質問もより長く、より具体的なのか.)

このようなもの?

def getInt(name, target):
    while True:
        try:
            return int(input('Please enter {0} for {1}: '.format(name, target)))
        except ValueError:
            print('Incorrect!')

strength0 = getInt('strength', 'character 1')
skill0 = getInt('skill', 'character 1')
strength1 = getInt('strength', 'character 2')
skill1 = getInt('skill', 'character 2')

一般に、ほぼ同じことを行う複数の関数がある場合、はい、リファクタリングする可能性がたくさんあるので、同じことを繰り返さないようにします。この場合、ユーザーに尋ねられていた質問が異なっていたので、それをパラメーター化する場合は、単一の関数を使用してすべてを処理することをお勧めします。

于 2013-11-04T20:22:03.407 に答える
1
def safe_int(x):
   try:
      return int(x)
   except ValueError:
      return 0

[safe_int(raw_input("Number %d:"%i)) for i in range(4)] 
于 2013-11-04T20:26:46.500 に答える