首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使python将垃圾邮件识别为列表而不是字符串

如何使python将垃圾邮件识别为列表而不是字符串
EN

Stack Overflow用户
提问于 2022-05-10 21:21:32
回答 2查看 52关注 0票数 0

我试图让我的程序接受用户输入的列表,并使用它作为stringList函数的参数,但是它一直认为列表只是一个字符串。我怎样才能把它看作是一份真正的清单呢?

下面是我到目前为止掌握的代码:

代码语言:javascript
复制
spam = ["apples", "bananas", "tofu", "cats"]
sillyList = []

def stringList(list):
    ending = len(list)
    
    try:
        print()
        for item in list[0: ending - 1]:
            print(item, end=", ")
        print("and " + list[ending - 1])

    except:
        print("Error: List contains no items. Do you wish to try again?")
        answer = input().lower()
        if answer == "yes" or "y":
            print()
            askListName()
        elif answer == "no" or "n":
            sys.exit()

def askListName():
    print("Enter the list name:")
    listName = input()

    try:
        stringList(listName)
    except:
        print("Error: Invalid list name.")

askListName()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-10 21:37:19

变量名被硬编码在程序中-- Python文件的一部分。用户在运行时在“输入”中输入的值,或者在程序运行时从数据文件中读取的值,都是“数据”。

这两件事是完全不同的,你应该用你的学习方法来了解它们的区别。

现在: Python是少数几种允许“变量名”和“数据”同时“桥接”的语言之一:有一种特殊的数据结构是字典,Python使用这些语言来保存变量名。"globals()“调用将返回一个字典,该字典包含程序中的所有全局变量,因此,如果从其中获取spam列表,则可以检索它。只需更改这一行:

代码语言:javascript
复制
stringList(listName)

代码语言:javascript
复制
stringList(globals()[listName])

你的程序就会超过你被卡住的那个点。(不过,我没有检查进一步的错误)

将来,如果希望用户输入与程序中键入的名称交互,建议将这些数据放在单独的、显式创建的字典中,如In:mydata = {"spam": ["apple", ...], "sillyList": [...]},那么所有用户输入必须是mydata键之一,不能破坏程序。

此外,还有其他要点:您不应该在函数中使用sys.exit:只需从函数中返回,并最终允许您的代码执行“从主文件的底部掉下来”。此外,避免使用普通Python内置的变量名称:这会使读者感到困惑,并且可能会阻止您使用这些构造。在这种情况下,在函数中使用"list“。更喜欢"lst“、"sequence”、"list_“或类似的,以免影响Python自己的”列表“。

票数 0
EN

Stack Overflow用户

发布于 2022-05-10 21:35:54

如果输入由空格分隔或如下所示:

'apples oranges kiwi'

代码语言:javascript
复制
listName = input()
fruit = listName.split()
stringList(fruit)

如果输入由逗号分隔,或者如下所示:

'apples,oranges,kiwi'

代码语言:javascript
复制
listName = input()
fruit = listName.split(',')
stringList(fruit)

string.split方法通过提供的参数分隔字符串。因此,.split('|')将输入字符串分隔为‘\’字符。如果省略了参数,则默认情况下使用空格拆分字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72193089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档