我被要求写一个模拟器,最终目标是看有多少墨水在一个大约15个滚筒的链条末端的圆柱体上。我目前正试图建立一个字典来定义滚轴。基于此,我想写一个函数,它将接受用户输入,“滚子直径”,找到给定直径与固定直径的比率,并将其转换为整数个“段”。我不是一个程序员(我正在使用互联网资源学习Python[2.7]),我正在为类型错误而挣扎:不能用非int类型的'float'执行多个序列 我相信这是一个很小的问题,我已经看过相关的答案,但我不明白具体我做错了什么…如果有任何建议,我们将不胜感激,这里是代码(只有几个“滚轴”),请不要笑。。。在
Rubber = True
Copper = False
CW = 1
ACW = -1
num_rollers = 4
plate_diameter = 406.4
rollers = [{} for i in range(num_rollers)]
rollers[0] = {'top_seg': 0, 'roller_diameter': [], 'segments': [], 'material': Copper, 'direction': ACW, 'ink': []}
rollers[1] = {'top_seg': 0, 'roller_diameter': [], 'segments': [], 'material': Rubber, 'direction': CW, 'ink': []}
rollers[2] = {'top_seg': 0, 'roller_diameter': [], 'segments': [], 'material': Copper, 'direction': ACW, 'ink': []}
rollers[3] = ['top_seg': 0, 'roller_diameter': [], 'segments': [], 'material': Rubber, 'direction': CW, 'ink': []}
R = rollers[i]
def roller_data():
global roller_diameter
roller_diameter = float(raw_input("Enter the roller diameter" + str(i) + ': '))
for i in range(num_rollers):
roller_data()
R['segments'] = int(round(rollers[3]['segments']*roller_diameter/plate_diameter))
R['angle'] = (360.0/R['segments'])
print rollers[3]['segments']
回溯是:
^{pr2}$当你运行这段代码时,你输入什么作为直径并不重要(我一直在用85,95,110,120),但使用什么数字没有区别。我想它采取任何数字(整数或浮点)和四舍五入任何浮点数。在
在这一行中:
取
^{pr2}$rollers[3]['segments']
,乘以roller_diameter
,然后除以plate_diameter
。这将向您显示错误消息这告诉我你试图用一个浮点数乘以一个序列,比如一个列表或一个元组。如果我理解正确的话,
rollers[3]['segments']
仍然是一个空列表,并且您试图将其乘以roller_diameter
,这是一个浮点。我不确定您在这里要做什么,因为您从来没有为segments
键分配任何东西,就我所知。在其他注意事项:
这一行给出了一个SyntaxError,因此很明显这不是您运行的代码。请始终将您实际运行的代码复制并粘贴到框中,否则人们必须区分“操作代码中的错误”和“操作员如何在StackOverflow上编辑代码的错误”。在
我想您认为这意味着
R
现在总是指向rollers
中的i
-th元素,但Python不是这样工作的。它的意思是“告诉名称R
,它现在指的是rollers[i]
当前描述的任何对象”。i
此时为3(这是您使用的列表理解的剩余部分),因此R = rollers[3]
。如果您将for i in range(num_rollers)
更改为for j in..
,您将得到因为它正在试图得到
i
的值,而此时是否i
。在这里不需要全局变量。如果要使输入成为函数,只需返回一个值:
当你拿回来的时候把它分配到某处,比如
并在计算中使用该值,而不是全局
roller_diameter
。在我想在你的最后几行中有一个缩进错误,你希望},所以也许我错了,但是请记住你的}。在循环中使用
R['segments']
位缩进,但是你硬编码rollers[3]
,而不是使用{R
总是{rollers[i]
,或者在循环中设置R = rollers[i]
,这样该行每次执行时都会得到一个新值i
。在显示错误输出
在你的代码里 R['segments']=浮动(圆形(滚柱[3][‘segments']*滚筒直径/板材直径))
您是否正在运行您的代码的正确版本或最新版本?您这里的代码块是否与从中获取此错误的代码相同?在
问候
相关问题 更多 >
编程相关推荐