Python 2.7的用户输入函数有问题,无法';I don’我不能让这些输入与程序一起工作
我对python世界非常陌生,虽然我在php方面做了很多工作。。。这是我的案子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
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*
返回确实有效的数字怎么样?然后将两个数字都存储在某个位置,然后可以求和/显示。