【问题标题】:Python - Can I color strings that are inside a list?Python - 我可以为列表中的字符串着色吗?
【发布时间】:2021-06-24 12:49:33
【问题描述】:

首先我想澄清一下,在撰写本文时,我是 Python 和一般编程的新手,我昨天才开始接触 Python。

我在处理个人项目时正在学习语言。

我的代码从 1 到 5 获取数字,通过 random.choices 方法运行它们并对其进行加权,然后返回一个如下所示的随机列表:

[2,1,4,5,2] 我们称这个列表为 xs

每个数字都有一个与之关联的字符串列表,我们称它们为“xsn”

所以 1 有 xs1 = ['1stringA','1stringB',...,'1stringZ'],与 2,3,4 和 5 相同

然后我通过这段代码运行 xs

while True:
    for i in range(5):
        if xs[i] == 1:
            xs[i] = (random.choice(xs1))
        if xs[i] == 2:
            xs[i] = (random.choice(xs2))
        if xs[i] == 3:
            xs[i] = (random.choice(xs3))    [Tips on how to improve this code are also accepted and apreciated]
        if xs[i] == 4:
            xs[i] = (random.choice(xs4))
        if xs[i] == 5:
            xs[i] = (random.choice(xs5))
    print(xs)

这会给我一个修改后的 xs 列表,而不是从 1 到 5 的数字,而是有字符串。所以如果最后一个列表是

[2,1,4,5,2]

新的 xs 列表将是

['2stringA','1stringA','4stringA','5stringA','2stringB']

我想要的是每个数字也有它自己的关联颜色,所以“2stringA”和“2stringB”将是绿色,“1stringA”将是白色等等。

关于如何实现这一点的任何想法?很抱歉写了这么长的帖子,随着我越来越好,我希望我能以更简洁的方式总结我的问题。

【问题讨论】:

  • 请从tour 重复on topicHow to Ask。 “教我这个基本的语言功能”对于 Stack Overflow 来说是题外话。您必须诚实地尝试解决方案,然后就您的实施提出具体问题。 Stack Overflow 无意取代现有的教程和文档。
  • 基本上,昨天刚开始学习 Python 意味着您应该阅读教程,而不是要求别人给您代码。否则,您的项目将由其他人编写,这里不适合。
  • 是的,我认为你的想法是对的,我明天会看一些教程并自学。

标签: python list random colors


【解决方案1】:

我设法解决了它,现在看起来像这样,如果有人有兴趣知道我是如何做到的,请回复,但我对它的结果很满意:^)

If any if you play TFT you might guess what I'm doing

【讨论】:

    【解决方案2】:

    你的问题不是很清楚。 我将假设您想以不同的颜色打印出代码。 有各种各样的库,例如termcolorcoloramacolored

    此外,您可以创建嵌套列表 (xsn = [[], xs1, xs2, xs3, etc]) 或字典 (xsn = {1: xs1, 2: xs3, etc etc}),这样您就可以使用 xs[i] = random.choice(xsn[i]) 代替 if xs[i]: do something 块,

    您也可以执行list comprehension 之类的操作,但既然您说您昨天开始使用python,那可能不是最好的主意。 但是如果你决定使用它,它看起来就像new_xs = [random.choice(xsn[i]) for i in xs]

    【讨论】:

    • “你的问题不是很清楚”那就不要回答了。在评论中要求澄清。
    • 是的,我可以看到我的问题不是很清楚,不过,我会研究你提到的工具,看看我如何实现它们。也感谢您的提示:)
    【解决方案3】:

    不确定我是否理解正确,但试试这段代码

    from colorama import Fore
    
    while True:
        for i in range(5):
            if xs[i] == i:
                xs[i] = Fore.GREEN + random.choice(xs + i)
    
    

    【讨论】:

    • 感谢您的回答,它没有用,但给了我一些关于我应该看什么的想法,非常感谢。
    猜你喜欢
    • 2017-06-03
    • 2014-09-30
    • 1970-01-01
    • 2017-05-22
    • 2014-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多