Python:我可以将这些函数组合在一起以缩短我的python代码吗?

时间:2013-11-04 20:17:59

标签: python function

我可以将这些功能组合在一起以缩短我的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 个答案:

答案 0 :(得分: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')

一般情况下,如果你有多个函数大致做同样的事情,那么是的,很有可能重构它,所以你don’t repeat yourself。在这种情况下,不同的是用户被问到的问题,所以如果我们对其进行参数化,我们最好只使用一个函数来处理它。

答案 1 :(得分:1)

可以推广该函数以询问任何数字的输入,例如:

def try_num(n):
    num = int(input("Enter num {} : ".format(n)))
    while num != n:
        print ("incorrect!")
        num = int(input("Enter num {} : ".format(n)))
    return num

像这样使用:

try_num(10)
Enter num 10 : 9
incorrect!
Enter num 10 : 10
10

答案 2 :(得分: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)] 

答案 3 :(得分:0)

我会创建一个验证方法,只需传入字符串。

def validate(question):
    while True:
        try:
            print question,
            input = raw_input()
            if input.isdigit():
                return int(input)
            else:
                print "Not a valid integer"