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

Python:我可以将这些函数组合在一起以缩短Python代码吗?,python,function,Python,Function,我可以将这些函数组合在一起以缩短python代码吗?我正在创建一个快速程序 以下是功能: def try1(): try: num1=input("Enter num 1: ") return num1 except ValueError: print("incorrect!") return #value def try2(): try:

我可以将这些函数组合在一起以缩短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上找到善良的人。

(此答案基于问题的原始版本,该版本不再可访问,但显示了一个不同的问题,用户一直被询问,直到输入了有效的数字。代码显示了一些技能游戏系统或其他东西,因此我的问题也更长、更具体。)

像这样的

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')

一般来说,当你有多个函数几乎做同一件事时,是的,有很多潜力重构它,这样你就可以了。在这种情况下,不同的是用户被问到的问题,所以如果我们将其参数化,我们最好只使用一个函数来处理所有问题。

我会创建一个验证方法然后简单地传入字符串

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

该函数可泛化为要求输入任何数字,例如:

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

如果while循环只运行一次迭代,为什么要使用while循环?为什么有四个函数做完全相同的事情?@iCodez:谢谢你指出这一点!编辑了这个问题。Cheeserre是解决方案:try:def try():try:num=input(“Enter num:”)返回num,除了value错误:print(“不正确!”)return#value您希望在except子句中实际发生什么?力量和技能从何而来?@user2953955在您原来的问题中,您有“请为角色1输入力量”和“请为角色2输入技能”这样的问题,所以我就是从这里开始的。当然,对于您更改的问题,您可以参数化数字,或者用户遇到的整个问题。请使用
除异常
而不是简单的除异常处理程序。
def safe_int(x):
   try:
      return int(x)
   except ValueError:
      return 0

[safe_int(raw_input("Number %d:"%i)) for i in range(4)]