首页 > 编程问答 >如何根据单独列表的内容迭代输入

如何根据单独列表的内容迭代输入

时间:2024-09-25 00:24:27浏览次数:12  
标签:python python-3.x

我有2个功能。我的目标是要求用户连接一些预先定义的电缆(根据他们正在运行的具体测试),确认他们已完成此操作,然后要求用户确认他们希望使用哪些 COMPort。

我的问题(位于define_ports()函数中)是我想知道如何根据我之前定义的电缆连接数量动态地为用户吐出输入。如果这很简单,我深表歉意,这已经是漫长的一天了,我的大脑现在无法工作。

代码如下:

ports = list(serial.tools.list_ports.comports())
conec1 = 'USB Captive Cable'
conec2 = 'Serial RS232 Cable'
conec3 = None
cons = [conec1, conec2, conec3]
spar = 0
conec_list = []
for i in cons:
    if i != None:
        conec_list.append(i) 
        spar += 1

def Setup():
    def test_setup(conec1, conec2, conec3):
        "Details what cables need to be connected before test can progress"
        print('\n> > For this test you will need to connect the following:\n')
        for i in conec_list:
            if i != None:
                print(i)
        while True:
            yes = input('> > Please confirm this has been done. y/n ')
            if yes != 'y':
                continue
            else:
                break
        return conec1, conec2, conec3

    def define_ports():
        "Asks user to confrim which Port numbers are to be used for each port connection"
        test_setup(conec1, conec2, conec3)
        print('\n> > The available Port connections are: ')
        for p in ports:
            print(p)
        while True:
            print('\n> > Please confirm which Port numbers are to be used for each connection\n')
            global prt1
            global prt2
            global prt3
            
            for i in conec_list:
                if i != None:
                    prt1 = input(f'- Port number for {conec1}: ')
                    prt2 = input(f'- Port number for {conec2}: ')
                    prt3 = input(f'- Port number for {conec3}: ')
            
            print('\n> > The Port numbers you have selected are: '
                f'{conec1} = {prt1}, '
                f'{conec2} = {prt2}'
                f'{conec3} = {prt3}')

            flash = input('Is this correct? y/n ')
            if flash != 'y':
                continue
            else:
                break
        prt1 = str('COM'+prt1)
        prt2 = str('COM'+prt2)
        prt3 = str('COM'+prt3)
        
    define_ports()

Setup()

我目前遇到的问题是获取输入(prt1、prt2、prt3) )根据 conec_list 中的项目数量呈现给用户。我尝试过各种 for 循环,但不确定这是否是最好的尝试方法。


你目前的代码中存在的其中一个问题是,你试图在 for 循环中为每个连接请求输入,但你并没有将连接名称 i 与对应的端口变量 prt1 prt2 prt3 关联起来。

与其尝试为每个端口使用单独的变量,不如使用字典来存储连接名称及其对应的端口。这将使代码更具动态性和可扩展性。

以下是更新后的代码:

import serial.tools.list_ports

ports = list(serial.tools.list_ports.comports())
conec1 = 'USB Captive Cable'
conec2 = 'Serial RS232 Cable'
conec3 = None
cons = [conec1, conec2, conec3]
spar = 0
conec_list = []
for i in cons:
    if i is not None:
        conec_list.append(i)
        spar += 1


def Setup():
    def test_setup(conec_list):
        "Details what cables need to be connected before test can progress"
        print('\n>>> For this test you will need to connect the following:\n')
        for i in conec_list:
            print(i)
        while True:
            yes = input('>>> Please confirm this has been done. y/n ')
            if yes != 'y':
                continue
            else:
                break

    def define_ports():
        "Asks user to confirm which Port numbers are to be used for each port connection"
        test_setup(conec_list)
        print('\n>>> The available Port connections are: ')
        for p in ports:
            print(p)

        port_numbers = {}
        while True:
            print('\n>>> Please confirm which Port numbers are to be used for each connection\n')
            for connection in conec_list:
                port_num = input(f'- Port number for {connection}: ')
                port_numbers[connection] = f'COM{port_num}'

            print('\n>>> The Port numbers you have selected are: ')
            for connection, port_num in port_numbers.items():
                print(f'{connection} = {port_num}')

            flash = input('Is this correct? y/n ')
            if flash != 'y':
                continue
            else:
                break
        return port_numbers

    port_numbers = define_ports()
    # 现在你可以使用 port_numbers 字典来访问每个连接的端口号
    # 例如:
    # print(port_numbers['USB Captive Cable']) 将打印 USB Captive Cable 的端口号


Setup()

代码解释:

  1. 使用字典存储端口号:
  2. 我们创建了一个空字典 port_numbers 来存储连接名称及其对应的端口号。

  3. 迭代 conec_list :

  4. define_ports 函数中,我们迭代 conec_list 中的每个连接,并提示用户输入相应的端口号。
  5. 然后,我们将连接名称和端口号存储在 port_numbers 字典中。

  6. 打印选择的端口号:

  7. 我们迭代 port_numbers 字典并打印每个连接及其选择的端口号。

  8. 返回 port_numbers :

  9. define_ports 函数现在返回 port_numbers 字典,以便可以在 Setup 函数中使用它来访问每个连接的端口号。

现在,代码将根据 conec_list 中的连接数动态地提示用户输入端口号。

标签:python,python-3.x
From: 79019548

相关文章

  • python+flask计算机毕业设计基于微信小程序的法律问题咨询系统设计与实现(程序+开题+论
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网的飞速发展和智能手机的普及,人们获取信息和解决问题的途径日益多样化。在法律服务领域,传统的线下咨询方式已难以满足公众日益增......
  • python+flask计算机毕业设计基于人脸识别的医疗保险系统的设计与实现(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着科技的飞速发展和人口老龄化的加剧,医疗保险系统面临着前所未有的挑战与机遇。传统医疗保险管理方式依赖于人工审核与纸质记录,不仅效率......
  • python+flask计算机毕业设计基于微信小程序的河南省美食分享平台(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在移动互联网时代,智能手机和社交媒体已成为人们日常生活不可或缺的一部分。微信小程序作为腾讯推出的一种轻量级应用形态,凭借其无需安装、......
  • python+flask计算机毕业设计基于微信小程序的网络文学管理平台(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网的迅猛发展,网络文学已成为当代文化生活中不可或缺的一部分,它不仅丰富了人们的阅读体验,还促进了文学创作的多元化与普及化。然而......
  • Python不同方式正倒序遍历的时间开销
    fromtimeitimporttimeitli=[iforiinrange(1000000)]deffor_loop(n):#使用for直接遍历ret=0foriinli:ret=li[i]deffor_loop_enumerate(n):#使用enumerate进行遍历ret=0foridx,iinenumerate(li):re......
  • 【入门岛·第2关】python基础
    目录Python实现wordcountVscode连接InternStudiodebug笔记Python实现wordcountimportstringdefwordcount(text):#去掉标点符号,并将文本转换为小写text=text.translate(str.maketrans('','',string.punctuation)).lower()#按空格分割文本为单词......
  • Anaconda的使用命令,方便python的管理
    pythonpython是世界上最好的编程语言(有杠精,你就对。)python的领域涉及了AI,大数据,网络爬虫,运维,开发等等方面。python的环境由解释器和包组成。1、python的解释器Python解释器是Python环境的本体,也就是python.exe文件。我们需要在环境变量的路径中将python.exe所在的目录添加上,这......
  • python--数据处理分析模块pandas
    一、什么是pandas?Pandas是基于Numpy的一套数据分析工具,该工具是为了解决数据分析任务而创建的。Pandas纳入了大量标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。它是使Python成为强大而高效的数据......
  • 头歌实践教学平台 Python程序设计 实训答案(三)
    第七阶段文件实验一文本文件的读取第1关:学习-Python文件之文本文件的读取任务描述本关任务:使用open函数以只写的方式打开文件,打印文件的打开方式。相关知识为了完成本关任务,你需要掌握:文本文件;open函数及其参数;文件打开模式;文件对象常用属性;关闭文件close......
  • python如何实现日期加减
    首先通过importdatetime,导入日期处理库。然后把日期转化成datetime标准格式,使用datetime.datetime.strptime()方法将字符串格式的时间转化为标准格式。其中"%Y/%m/%d%H:%M:%S"为time字符串的时间格式:Y为年,m为月,d为天,H为小时,M为分钟,S为秒。如果我们要加的时间是天......