【发布时间】:2021-09-23 19:34:09
【问题描述】:
目前,我正在用 Python v3.9.5 编写一个在图表上绘制数据的程序。它主要工作,但我试图实现的功能之一是能够选择自己的配色方案。以前,我通过为每个单一配色方案使用一个“if”语句来做到这一点,但是使用 11 种配色方案会占用大量空间。这是我使用的原始代码;从现在开始,一切都将以“红色”配色方案展示。
if color == "Red":
plotter.color(random.choice(Red))
这是一个名为“红色”的列表:
Red = ["IndianRed", "LightCoral", "Crimson", "Red", "FireBrick"]
另外,这是我导入的模块:
import turtle
from turtle import *
import random
from math import floor
您可能想知道为什么我从 turtle 导入了两次东西,答案是没有星号的东西,填充命令会中断。我认为我不应该删除它。
我正在编写的函数有五个参数:fill、color、square、x、y。 “颜色”是我想用来在函数内部分配配色方案的那个;它是这样定义的:
colorscheme = input("What color scheme would you like to use? ")
当我们运行函数时,“colorscheme”被设置为参数“color”。我正在尝试使用“for”循环使颜色循环通过,因此如果用户从左到右绘制数据,点将是不同的,但我尝试的方法不起作用:
for i in color:
plotter.color(i)
我认为问题在于 Python 正在寻找一个名为“color”的列表,并且在找不到时会感到困惑,即使“color”是存储列表名称的变量。这是当我要求红色配色方案然后尝试绘制一个点时 shell 给我的错误:
Traceback (most recent call last):
File "/Users/peytonhemann/Documents/Ridiculous Programs/Plotterv3.py", line 179, in <module>
plotPoint(isfilled, colorscheme, graphsize, xvalue, yvalue)
File "/Users/peytonhemann/Documents/Ridiculous Programs/Plotterv3.py", line 113, in plotPoint
plotter.color(i)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/turtle.py", line 2217, in color
pcolor = self._colorstr(pcolor)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/turtle.py", line 2697, in _colorstr
return self.screen._colorstr(args)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/turtle.py", line 1159, in _colorstr
raise TurtleGraphicsError("bad color string: %s" % str(color))
turtle.TurtleGraphicsError: bad color string: R
如何指定我说的是存储在“color”中的字符串,而不是“color”本身?另外,如果我做错了,有没有一种完全不同的方法可以让一个配色方案的颜色循环通过,同时每个配色方案只使用一段代码?
而且,只是一个免责声明,我还在学习 Python,所以如果我做错了一切或者答案非常简单,请不要在 cmets 中对我施加压力。这也是我在这里的第一个问题,所以我可能没有你们需要的所有信息。不过,如果需要,我会回复您并提供有关我的程序的更多信息。感谢您的帮助!
【问题讨论】:
-
如果你的代码在没有
from turtle import *的情况下无法运行,这意味着你从没有turtle.前缀的turtle 模块中引用了一些东西。… import *的问题在于它可能会导入你不知道的东西,并且可能会破坏你自己的同名变量——这使得调试更加困难。
标签: python list for-loop variables