Python While循环&;带有函数的if/else/elif语句
我正试图用这个脚本设置一个while循环。脚本将要求最终用户输入一个选项。然后,脚本将根据最终用户输入运行一个函数 我在第43-48行创建了一个if/elif/else语句。如您所见,在第47-48行,如果最终用户输入了错误的命令,shell将打印“错误的输入” 当用户输入错误的输入时,脚本结束,我希望脚本在第45行重新提问Python While循环&;带有函数的if/else/elif语句,python,loops,Python,Loops,我正试图用这个脚本设置一个while循环。脚本将要求最终用户输入一个选项。然后,脚本将根据最终用户输入运行一个函数 我在第43-48行创建了一个if/elif/else语句。如您所见,在第47-48行,如果最终用户输入了错误的命令,shell将打印“错误的输入” 当用户输入错误的输入时,脚本结束,我希望脚本在第45行重新提问 1 import ipaddress 2 import socket 3 4 #networx prefix calc 5 def f1()
1 import ipaddress
2 import socket
3
4 #networx prefix calc
5 def f1():
6 try:
7 network = input('please input network address with the prefix: ')
8 network = ipaddress.ip_network(network)
9 print(network)
10
11 except ValueError:
12 print('That is not a network address')
13
14 iplist= list(ipaddress.ip_network(network).hosts())
15 for i in range(10,len(iplist),2):
16 print(iplist[i])
17 #port scan
18 def f2():
19 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
20 target = input("what website to scan?: ")
21 def pscan(port):
22 try:
23 con = s.connect((target, port))
24 return True
25 except:
26 return False
27 for x in range(81):
28 if pscan(x) > pscan(int(x)):
29 print("port ",x," is open")
30 else:
31 print("port ",x," is closed")
32
33 with open("ports.txt,"r"") as ports:
34 ports = ports.read()
35 ports = int(ports)
36
37 #user input
38 print("Please enter 'network' to calculate odd number IP address ranges")
39 print("Please enter 'port' to scan ports 1-80")
40
41 q1= input("please input your choice: ")
42
43 if= q1 == "network":
44 f1()
45 elif q1 == "port":
46 f2()
47 else:
48 print("incorrect input, try again")
故障排除
我试图通过删除else语句并使用while语句重新接收它来进行故障排除(代码发布在下面)。但是,如果输入不正确,程序仍然存在
if q1 == "network":
f1()
elif q1 == "port":
f2()
#else:
#print("incorrect input, try again")
while q1 != "network" or "port":
print("incorrect input, try again")
break
处理这个问题的更简单的方法是将所有内容都包含在一个无限循环中,并在您有有效输入时显式地中断它
valid_input = False
while not valid_input:
q1 = input("please input your choice: ")
if q1 == "network":
f1()
valid_input = True
elif q1 == "port":
f2()
valid_input = True
else:
print("incorrect input, try again")
如您所见,如果我们沿着任何一条有效的路径前进,那么我们将退出循环。否则,我们将无限期地继续下去