2015-10-18 105 views
0

我非常频繁地使用这组代码,所以我创建了一个函数,我想使用它而不是多次编写代码。Python变量创建函数

def setVar(): 
try: 
    x = int(input()) 
except: 
    print("The number is not an integer please try again") 
    setVar() 

的功能如下:

def setVarInt(x): 
try: 
    x = int(input()) 
except: 
    print("The number you have entered is not an integer.") 
    print("Please try again.") 
    setVarInt(x) 

所以,当我做setVarInt(T),我希望它创建一个变量T和等待的输入。

输入格式:

setVarInt(T) 
print(T) 

输出格式:

13 #This is where I input T 
13 

我得到这个错误:

Traceback (most recent call last): 
    File "E:\Computer Coding\Python\My Code\Function Files\setVars.py", line 19, in <module> 
setVarInt(T) 
NameError: name 'T' is not defined 
+0

它看起来像你只需要返回值,如果它是一个int。 –

+0

你能举个例子吗? –

+0

'return x'返回 –

回答

0

不使用递归来解决这个问题,你应该使用一个while循环。另外,您的x参数不是必需的。

def setVarInt(): 
    while True: 
     try: 
      return int(input()) 
     except ValueError: 
      print('Please enter an integer') 

然后当你调用这个函数时,你必须捕获返回值才能打印它。

x = setVarInt() 
print(x) 
+1

也可能值得指出的是,你应该赶上'ValueError'与所有的例外。 [你可以'返回int(input())'而不用else块] – AChampion

+0

我也将函数从'setVarInt'重命名为'getInt',因为它实际上并没有设置变量。 'setVar'是OPs混淆的剩余部分。 –

+0

谢谢,这正是我需要它完美的作品。 –

0

你已经做得差不多了。你刚刚忘记了return关键词。

试试这个:

def setVar(): 
    try: 
     x = int(input()) 
     return x 
    except: 
     print("The number is not an integer please try again") 
     return setVar() 



x = setVar() 
print(x) 
+0

除非你在异常中返回setVar(),否则如果它们第一次没有输入int,它将不会返回任何东西。可能值得让这个循环与递归。 – AChampion