将 while 循环的输出呈现为用户的选择
Presenting output of while loop as selection for user
这是我目前的情况
#!/usr/bin/python3
import netifaces
interfaces = [i for i in netifaces.interfaces() if not i.startswith(("lo", "ipsec", "tun"))]
count = len(interfaces)
i = 0
x = 0
while i < len(interfaces):
print("Interface " + interfaces[i])
i += 1
x += 1
这将打印一个接口列表,但我想将该列表呈现为客户可以select。
即“请 select 外部接口 1.) enp1s0 2.) enp0s21f0u4 3.) wlp2s0 4.) exit
感谢您提供的任何帮助
只需添加以下行:
print("Please select external interface:\n 1.) enp1s0\n 2.) enp0s21f0u4\n 3.) wlp2s0\n 4.) exit\n")
value = input("")
Python 依靠缩进来屏蔽代码,因此 while
语句的缩进是一个问题。您通常不需要像在 C 语言中那样多的计数器变量。我不知道您稍后是否在代码中使用 count
和 x
,但您不在这里使用它们,所以我把它们拿出来了。如果没有计数器,您可以取出 while
并将其替换为 for
.
这没有 input-validation,但试试这个:
#!/usr/bin/python3
import netifaces
interfaces = [i for i in netifaces.interfaces() if not i.startswith(("lo", "ipsec", "tun"))]
print("Choose an interface:")
for i in range(len(interfaces)):
print("\t{}) ".format(i+1), interfaces[i])
sel = int(input("\n> "))-1
print("You have selected interface {}.".format(interfaces[sel]))
您提到您正在为客户执行此操作:确保在将输入转换为 int()
并使用之前验证该输入。
这是我目前的情况
#!/usr/bin/python3
import netifaces
interfaces = [i for i in netifaces.interfaces() if not i.startswith(("lo", "ipsec", "tun"))]
count = len(interfaces)
i = 0
x = 0
while i < len(interfaces):
print("Interface " + interfaces[i])
i += 1
x += 1
这将打印一个接口列表,但我想将该列表呈现为客户可以select。 即“请 select 外部接口 1.) enp1s0 2.) enp0s21f0u4 3.) wlp2s0 4.) exit
感谢您提供的任何帮助
只需添加以下行:
print("Please select external interface:\n 1.) enp1s0\n 2.) enp0s21f0u4\n 3.) wlp2s0\n 4.) exit\n")
value = input("")
Python 依靠缩进来屏蔽代码,因此 while
语句的缩进是一个问题。您通常不需要像在 C 语言中那样多的计数器变量。我不知道您稍后是否在代码中使用 count
和 x
,但您不在这里使用它们,所以我把它们拿出来了。如果没有计数器,您可以取出 while
并将其替换为 for
.
这没有 input-validation,但试试这个:
#!/usr/bin/python3
import netifaces
interfaces = [i for i in netifaces.interfaces() if not i.startswith(("lo", "ipsec", "tun"))]
print("Choose an interface:")
for i in range(len(interfaces)):
print("\t{}) ".format(i+1), interfaces[i])
sel = int(input("\n> "))-1
print("You have selected interface {}.".format(interfaces[sel]))
您提到您正在为客户执行此操作:确保在将输入转换为 int()
并使用之前验证该输入。