Python 2.7的用户输入函数有问题,无法';I don’我不能让这些输入与程序一起工作

Python 2.7的用户输入函数有问题,无法';I don’我不能让这些输入与程序一起工作,python,python-2.7,user-input,numerical-methods,Python,Python 2.7,User Input,Numerical Methods,我对python世界非常陌生,虽然我在php方面做了很多工作。。。这是我的案子 我正在用python 2.7为我的小程序编写一些代码 在那个程序中,我需要2个用户输入,它们都是数字 第一个数字不得大于11且不得小于0 第二个值不得大于59且不得小于0 所以首先,我必须检查两个用户输入是否有效,如果他们输入错误,程序必须给他们一个警告,让他们再试一次 最后,如果他们两个数字都正确,我想添加这些数字,并提示一条消息,如“您的数字总和是……等等……等等……” 这是我的代码: def validNum1

我对python世界非常陌生,虽然我在php方面做了很多工作。。。这是我的案子

  • 我正在用python 2.7为我的小程序编写一些代码
  • 在那个程序中,我需要2个用户输入,它们都是数字
  • 第一个数字不得大于11且不得小于0
  • 第二个值不得大于59且不得小于0
  • 所以首先,我必须检查两个用户输入是否有效,如果他们输入错误,程序必须给他们一个警告,让他们再试一次
  • 最后,如果他们两个数字都正确,我想添加这些数字,并提示一条消息,如“您的数字总和是……等等……等等……”
  • 这是我的代码:

    def validNum1(Num1):
        if Num1 < 0:
            print "%s is not valid value. Try again." % Num1
            return 0
        elif Num1 > 11:
            print "%s is not valid value. Try again." % Num1
            return 0
        else:
            return 1
    
    def getInput_Num1():
        while 1:
            Num1 = raw_input("Enter Num1 Value: ")
            if validNum1(int(Num1)):
                break
        print "You're right. %s is a valid Num1." % Num1
        return
    def validNum2(Num2):
        if Num2 < 0:
            print "%s is not valid value. Try again." % Num2
            return 0
        elif Num2 > 59:
            print "%s is not valid value. Try again." % Num2
            return 0
        else:
            return 2
    def getInput_Num2():
        while 2:
            Num2 = raw_input("Enter Num2 Value: ")
            if validNum2(int(Num2)):
                 break
        print "You're right. %s is a valid Num2." % Num2
        return
    
    if __name__ == '__main__':
        getInput_Num1()
        getInput_Num2()
    
    def validNum1(Num1):
    如果Num1<0:
    打印“%s”不是有效值。请重试。“%Num1”
    返回0
    elif Num1>11:
    打印“%s”不是有效值。请重试。“%Num1”
    返回0
    其他:
    返回1
    def getInput_Num1():
    而1:
    Num1=原始输入(“输入Num1值:”)
    如果有效值为1(整数(Num1)):
    打破
    打印“您是对的。%s是有效的Num1。”%Num1
    返回
    def有效值2(Num2):
    如果Num2<0:
    打印“%s”不是有效值。请重试。“%Num2”
    返回0
    elif Num2>59:
    打印“%s”不是有效值。请重试。“%Num2”
    返回0
    其他:
    返回2
    def getInput_Num2():
    第二:
    Num2=原始输入(“输入Num2值:”)
    如果有效值为2(整数(Num2)):
    打破
    打印“您是对的。%s是有效的Num2。”%Num2
    返回
    如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
    getInput_Num1()
    getInput_Num2()
    

    所以现在我想你们都明白了‘需要填什么;但让我说得更清楚一些。我想添加到这个程序中的是一种添加Num1和Num2并向用户显示总和的功能。

    尝试将所有函数合并到一个函数中(我想说这会使它更干净),然后您可以添加
    Num1
    Num2
    ,并打印结果

    def getInput():
        while True:
            Num1 = raw_input('Enter Num1 Value: ')
            if Num1 in range(12):
                print 'You're right. %s is a valid Num1.' % Num1
                break
            print '%s is not valid value. Try again.' % Num1
        while True:
            Num2 = raw_input('Enter Num2 Value: ')
            if Num2 in range(60):
                print 'You're right. %s is a valid Num2.' % Num2
                break
            print '%s is not valid value. Try again.' % Num2
        print 'The sum of your numbers is %s.' % (Num1 + Num2)
    
    if __name__ == '__main__':
        getInput()
    
    但是,如果不想更改太多代码,请更改第二个
    getInput
    函数,使其接受参数
    Num1
    ,然后让第一个函数调用第二个函数,参数输入为
    Num1
    。然后编写第三个函数,接受这两个数字,相加并打印结果。所以像这样:

    getInput_Num2(Num1)  #add this to end of `getInput_Num1` function
    
    def getInput_Num2(Num1):  #add a `Num1` parameter to pass to the new function
    
    addNums(Num1, Num2)  #call the new function at the end of `getInput_Num2`
    
    def addNums(Num1, Num2):
        print 'The sum of your numbers is %s.' % (Num1 + Num2)
        #do whatever else you want to do
    
    if __name__ == '__main__':
        getInput_Num1()
    

    我建议不要只做一个函数,而是将关注点分开:需要输入(两次,使用不同的提示)、需要验证、需要乘法以及需要打印结果。对于后两者,由于其低复杂性,不需要函数。对于前两个,创建函数并将它们重新用于num1和num2

    试试这个:

    def is_valid_number(number_str):
        try:
            number = int(number_str)
        except ValueError:
            return False
        if number < 0 or number > 11:
            return False
        else:
            return True
    
    def get_input_number(prompt):
        while True:
            num = raw_input(prompt)
            if is_valid_number(num):
                return int(num)
            else:
                print "%s is not a valid value. Try again." % num
    
    if __name__ == '__main__':
        num1 = get_input_number("Enter Num1 Value: ")    
        num2 = get_input_number("Enter Num2 Value: ")
        print "%i + %i = %i" % (num1, num2, num1+num2)
    
    def是有效的数字(数字):
    尝试:
    数字=整数(数字)
    除值错误外:
    返回错误
    如果数字<0或数字>11:
    返回错误
    其他:
    返回真值
    def get_输入_编号(提示):
    尽管如此:
    num=原始输入(提示)
    如果是有效的\u编号(num):
    返回整数(num)
    其他:
    打印“%s”不是有效值。请重试。“%num”
    如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
    num1=获取输入编号(“输入num1值:”)
    num2=获取输入编号(“输入num2值:”)
    打印“%i+%i=%i”%(num1、num2、num1+num2)
    
    主例程只有三行,每个方法按照其名称执行,并且是可重用的


    关注点分离(SoC)是软件设计的一个主要原则,它使代码更具可读性、可维护性、优雅且不易出错

    我会尝试将其归结为两个函数接受参数。这也意味着您可以通过更改
    限制列表
    来更改限制的数量及其值,从而使代码更加灵活。此外,它还使用了新样式的字符串格式,更简洁

    def validNum(num,limit):
        if 0< num <limit:
            print "{0} is a valid value.".format(str(num))
            return num
        print "{0} is not a valid value. Try again.".format(str(num))
    
    def getInput(limits):
        results = []
        for limit in limits:
            while True:
                num = int(raw_input("Enter a numeric Value: "))            
                if validNum(num,limit):
                    results.append(int(num))
                    break   
        print 'The sum of chosen numbers is {0}'.format(str(sum(results)))
    
    limits=[11,59]   
    getInput(limits)
    
    def validNum(num,limit):
    
    如果0从函数返回值,那么让
    getInput\u num*
    返回确实有效的数字怎么样?然后将两个数字都存储在某个位置,然后可以求和/显示。