if和else print()都显示为结果。 python的新手,只需要正确的基础知识
任何帮助都会很棒。
if test_choice == '1':
print("You have chosen to test Device & Softphone HTTP to Horizon")
for port in '80':
result = sock.connect_ex(('88.215.61.173', 80))
if result == 0:
print("Port 80 is open to xsp.unlimitedhorizon.co.uk")
else:
print("Port 80 timeout. Please check firewall")
如果result == 0,则else:都将打印结果。...
结果如下:
You have chosen to test Device & Softphone HTTP to Horizon
Port 80 is open to xsp.unlimitedhorizon.co.uk
Port 80 timeout. Please check firewall
答案 0 :(得分:2)
在您的for循环中,端口的值为'8',然后为'0'。我猜你不想要什么。
将for循环替换为
for port in ['80']:
# Do Stuff
端口将只取一个值('80'),因此仅迭代一次
在您的模块中,您需要将port设置为int。做for port in [80]
答案 1 :(得分:1)
@BlueSheepToken是正确的,循环for port in '80':
使端口变量以8
然后以0
作为值。这是因为在python中:
字符串是不可变的序列
序列是iterable。
因此,在第一次运行result = sock.connect_ex(('88.215.61.173', 80))
中连接成功,因此结果等于0,这就是为什么第一次打印为Port 80 is open to xsp.unlimitedhorizon.co.uk
的原因。
在第二次运行中,连接已经建立,因此sock.connect_ex
失败,您得到了第二张打印纸。
是的,如果您确实需要测试多个端口,则可以将端口放在列表中,但是您也必须使用port变量:
for port in [80]:
result = sock.connect_ex(('88.215.61.173', port))
但是,如果您只需要测试一个端口,则可以删除for循环。
答案 2 :(得分:-2)
在这段代码中,您不需要那个for
(for port in '80':
)。尝试删除它。