【问题标题】:Checking the contents of a list检查列表的内容
【发布时间】:2014-05-07 08:18:43
【问题描述】:

我需要知道是否可以检查某个值是否位于列表中。以及如何做到这一点。

基本上,程序需要允许用户在列表中输入一系列数字,直到用户指定完成。他们会通过输入一系列数字 -123 来做到这一点。

这是我到目前为止的代码,它需要有一个 while 构造。任何帮助将不胜感激。

enterNum = input()
userList = []
while enterNum != -123:
    for i in range(enterNum):
        userList.append(float(input()))

我觉得我错过了一些简单的东西。

【问题讨论】:

    标签: python list for-loop while-loop


    【解决方案1】:

    你差点就吃完了:

    userList = []
    while True:
        enterNum = input()
        if enterNum != -123:
            userList.append(enterNum)
        else:
            break
    

    或者:

    userList = []
    while enterNum != -123:
        enterNum = input()
        userList.append(enterNum)
    

    但你最终会在列表中得到 -123

    有了错误捕获,因为你不能指望用户,我会做这样的事情:

    userList = []
    while True:
        try:
            enteredNum = float(input())
            if enteredNum == -123:
                break
            userList.append(enteredNum)
        except ValueError:
            print("Invalid number")
    

    【讨论】:

    • 您可能想要捕捉不可避免地会引发的 ValueError ;)
    【解决方案2】:

    是的,可以使用 in 运算符来完成,但最好不要一开始就将 -123 添加到列表中。我还建议进行一些额外的改进。最重要的是,如果输入了数字以外的内容,您应该处理 exceptions

    userList = list()
    
    while True:
        try:
            enteredNum = float(input())
            if enteredNum == -123:
                break
            userList.append(enteredNum)
        except ValueError:
            print ("Invalid number")
    

    【讨论】:

      【解决方案3】:

      你可以这样做:

      if num in your_list:
          #do_something
      

      另外,要检查某些内容是否不在列表中,您可以这样做:

      if num not in your_list:
          #do_something_else
      

      【讨论】:

        猜你喜欢
        • 2013-09-12
        • 1970-01-01
        • 2021-02-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-20
        • 1970-01-01
        相关资源
        最近更新 更多