将 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 语言中那样多的计数器变量。我不知道您稍后是否在代码中使用 countx,但您不在这里使用它们,所以我把它们拿出来了。如果没有计数器,您可以取出 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() 并使用之前验证该输入。