Python 3.x Python while循环未等待用户输入

Python 3.x Python while循环未等待用户输入,python-3.x,Python 3.x,我还在学习python,所以请记住,我不是专家,我正在尝试创建一个小程序,根据用户输入创建一个文件 第一个菜单将包含一些设备的条形码,每次条形码扫描仪扫描时,设备都会自动发送一个enter,因此我选择了,而True:以允许多个输入,扫描完成后,用户将按CTRL+D进入下一个菜单 下面的代码一直工作到调用下一个菜单但停止(它应该要求用户输入下一个值) def netmap_mac(): 清除() 标题_函数() 打印('首先扫描设备的mac地址:') 打印('finish press'时) mac

我还在学习python,所以请记住,我不是专家,我正在尝试创建一个小程序,根据用户输入创建一个文件

第一个菜单将包含一些设备的条形码,每次条形码扫描仪扫描时,设备都会自动发送一个enter,因此我选择了
,而True:
以允许多个输入,扫描完成后,用户将按CTRL+D进入下一个菜单

下面的代码一直工作到调用下一个菜单但停止(它应该要求用户输入下一个值)

def netmap_mac():
清除()
标题_函数()
打印('首先扫描设备的mac地址:')
打印('finish press'时)
mac=[]
尽管如此:
尝试:
行=输入()
除EOFError外:
返回netmap_ip()
mac.append(行)
打印(mac)
def netmap_ip():
清除()
标题_函数()
打印('输入扫描的每个MAC的管理IP:')
打印('finish press'时)
ip=输入()
打印('这是netmap_ip()')
我理解我的问题,while循环仍然是
True
,但我不确定如何关闭它

我相信while循环将是我唯一简单的选择,因为一旦扫描完成,条形码扫描仪就会自动发送Enter


我正在按照您描述的流程运行python3,下面是代码。 1.你应该休息一会儿 2.您应该在netmap_ip函数中添加一段时间

def netmap_mac():
    # clear()
    # header_function()
    print('Start by scanning the mac address of the device: ')
    print('When finish press <CTRL+D>')
    mac = []
    while True:
        try:
            line = input()
            mac.append(line)
        except EOFError:
            break

    print(mac)
    netmap_ip()

def netmap_ip():
    # clear()
    # header_function()
    print('Enter the mangement IP for each MAC you scanned: ')
    print('When finish press <CTRL+D>')
    ips = []
    while True:
        try:
            line = input()
            ips.append(line)
        except EOFError:
            break

    print ('This is netmap_ip()')
    print(ips)

if __name__ == '__main__':
  netmap_mac()
def netmap_mac():
#清除()
#标题_函数()
打印('首先扫描设备的mac地址:')
打印('finish press'时)
mac=[]
尽管如此:
尝试:
行=输入()
mac.append(行)
除EOFError外:
打破
打印(mac)
netmap_ip()
def netmap_ip():
#清除()
#标题_函数()
打印('输入扫描的每个MAC的管理IP:')
打印('finish press'时)
ips=[]
尽管如此:
尝试:
行=输入()
ips.append(行)
除EOFError外:
打破
打印('这是netmap_ip()')
打印(ips)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
netmap_mac()
更新:

输出:

Start by scanning the mac address of the device:
When finish press <CTRL+D>
mac1
mac2  # -> press Ctrl-D
['mac1', 'mac2']
Enter the mangement IP for each MAC you scanned:
When finish press <CTRL+D>
ip1
ip2  # -> press Ctrl-D
This is netmap_ip()
['ip1', 'ip2']
首先扫描设备的mac地址:
何时完成冲压
mac1
mac2#->按Ctrl-D键
[‘mac1’、‘mac2’]
为扫描的每个MAC输入管理IP:
何时完成冲压
ip1
ip2#->按Ctrl-D键
这是netmap_ip()
[‘ip1’、‘ip2’]

请描述您的程序所需的流程。您希望何时输入while。当单身的时候。netmap_ip()应该返回什么?我的程序主要是一组用户输入和菜单来引导用户,它最终会将用户输入保存到一个文件中,netmap_ip()是我程序的下一个用户输入,用户应该为netmap_mac()期间扫描的每个条形码提供ip在第一次Ctrl-D之后,您是否希望添加另一个用户输入的ip,然后退出?或者几个?因此ip需要与已扫描的MAC数量相匹配,即:如果用户已扫描10个MAC地址,则需要输入10个ip,我没有足够的经验来建立验证机制,因此我现在信任用户输入。为了回答您的问题,我期待着几天,我已经测试了代码-它不允许我在netmap_ip()上输入任何内容,它实际上停止了代码:进程结束,退出代码为0,我以前也遇到过同样的问题。我添加了程序的控制台输出。它似乎起作用了。这就是你所期望的吗?正是我想要的,我不知道为什么我的不会给出同样的结果,这是我的全部代码:-我正在使用python 3.7,它正在工作。检查:正确我在windows上开发脚本,但一旦完成,它将在linux服务器上执行
Start by scanning the mac address of the device:
When finish press <CTRL+D>
mac1
mac2  # -> press Ctrl-D
['mac1', 'mac2']
Enter the mangement IP for each MAC you scanned:
When finish press <CTRL+D>
ip1
ip2  # -> press Ctrl-D
This is netmap_ip()
['ip1', 'ip2']