[英]Python: Can I combine these functions together to shorten my python code?
我可以将这些功能结合在一起以缩短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 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
def safe_int(x):
try:
return int(x)
except ValueError:
return 0
[safe_int(raw_input("Number %d:"%i)) for i in range(4)]
我将创建一个验证方法,然后简单地传入字符串。
def validate(question):
while True:
try:
print question,
input = raw_input()
if input.isdigit():
return int(input)
else:
print "Not a valid integer"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.