Python while循环不等待用户输入

时间:2019-10-27 14:21:42

标签: python-3.x

我仍在学习python,因此请记住,因为我不是专家,我正在尝试创建一个小程序,该程序将根据用户输入创建文件,

第一个菜单将包含设备的某些条形码,每次条形码扫描仪扫描时,设备都会自动发送回车,因此,为什么在扫描后我做了while True:为了允许多次输入完成后,用户将通过按CTRL + D转到下一个菜单

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

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()
        except EOFError:
            return netmap_ip()
        mac.append(line)
    print(mac)

def netmap_ip():
    clear()
    header_function()
    print('Enter the mangement IP for each MAC you scanned: ')
    print('When finish press <CTRL+D>')
    ip = input()
    print ('This is netmap_ip()')

我了解我的问题,while循环仍然为True,但我不确定如何关闭它

我相信while循环将是我唯一的简单选择,因为条形码扫描器会在每个条形码扫描完成后自动发送Enter键

我正在运行python3

1 个答案:

答案 0 :(得分:0)

按照您描述的流程,这是代码。 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()

更新:

输出:

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']