Python 函数返回变量的第一次初始化,而不是被覆盖的变量
当我运行它时返回错误,我希望用户输入主机和端口,但是如果用户在端口号中输入文本(字母),它应该回调函数er(),它确实回调,但即使在我输入正确的端口号后返回错误。因为我很无聊,所以我让它为您工作Python 函数返回变量的第一次初始化,而不是被覆盖的变量,python,function,Python,Function,当我运行它时返回错误,我希望用户输入主机和端口,但是如果用户在端口号中输入文本(字母),它应该回调函数er(),它确实回调,但即使在我输入正确的端口号后返回错误。因为我很无聊,所以我让它为您工作 def hand(): print("Wrong port format") er() def er(): try: host=input("Host: ") serverPort=(input("Port: "))
def hand():
print("Wrong port format")
er()
def er():
try:
host=input("Host: ")
serverPort=(input("Port: "))
try:
Port=int(serverPort)
except Exception:
hand()
return (host,int(serverPort))
except Exception:
return("Wrong")
serverPorti=er()
print((serverPorti))
摆脱try/except并查看回溯。如果你不明白,把它贴在你的问题上。你的毯子正在隐藏我们所有人的详细信息。@roganjosh我去掉了它,变量host和severPort的值仍然与我第一次输入的值相同,而不是重新调用函数后的值,因此serverPort仍然具有我第一次输入的文本值。编辑并使其工作,请记住python版本低于3使用原始输入而不是输入,我还要注意,您的问题与套接字编程本身无关;)那真是太好了,谢谢你!,是的,你是对的,我正在编程一个服务器客户端套接字,这样我的badas你可以看到一个while循环更好地从终端获取正确的用户输入。是的,谢谢,我更改了标题,希望它更适合这个问题
def getHostPort():
host = ''
serverPort = ''
inputCorrect = False
while not inputCorrect:
try:
host = input("Host: ")
serverPort = int(input("Port: "))
inputCorrect = True
except Exception:
print("wrong port")
continue
return (host,int(serverPort))
serverPorti=getHostPort()
print((serverPorti))