如何在python中设置值错误异常
我有以下代码:如何在python中设置值错误异常,python,python-3.x,while-loop,valueerror,try-except,Python,Python 3.x,While Loop,Valueerror,Try Except,我有以下代码: while True: try: HOST = input(float(('Enter host IP')) except ValueError: print('Error. That is not a valid IP address.') continue 我要求用户输入一个IP地址。我想设置一个错误,这样如果他使用一个字母,他就会
while True:
try:
HOST = input(float(('Enter host IP'))
except ValueError:
print('Error. That is not a valid IP address.')
continue
我要求用户输入一个IP地址。我想设置一个错误,这样如果他使用一个字母,他就会得到一个错误。我如何才能做到这一点,为什么我的代码不能工作?试试这样的方法
为True时:
尝试:
主机=输入('输入主机IP:')
如果len(主机拆分(“.”)!=4:
升值误差
对于主机中的字符:
如果字符不在“0123456789”中:
升值误差
除值错误外:
打印('错误。这不是有效的IP地址')
持续
其他:
打破
不需要尝试/例外。你只需要一个IP验证。这段代码应该是有效的
import re
while True:
HOST = input("Enter IP adress: ")
if re.match(
r"^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$",
HOST,
):
print(f"{inp} is valid IP adress")
break
else:
print("Enter valid IP adress")
首先,我将指出您提交的代码中的一些问题。首先,您的代码永远不会退出while循环,因为您没有提供中断。其次,对于IPV4,有效IP地址的形式为192.168.2.10;对于IPV6,有效IP地址的形式为“2001:0db8:0a0b:12f0:0000:0000:0000:0001”,并且永远不能解释为浮点数,因此您将始终生成值错误响应。为了正确验证IP地址,请检查以下各项
您无法将字符串转换为浮点值,因此此代码不会检查任何内容,因为代码总是会抛出错误。我可能会在if语句中对IP地址使用正则表达式验证。如何修复此问题?我是pythonIt的新手,它有点不清楚您到底想要实现什么,但是如果输入与IP地址不匹配,听起来您想
提高ValueError
。使用re
检查输入,如果不匹配raise
aValueError
。请将其输入代码中?我对python有点陌生
import ipaddress
Host = None
while True:
try:
Host = ipaddress.ip_address(input('Enter host IP'))
break
except:
print('Error. That is not a valid IP address.')
continue