我被要求编写一个模拟器,最终目标是查看在大约 15 个滚筒链末端的滚筒上最终有多少墨水。我目前正在尝试建立一个定义滚轮的字典。由此我想编写一个函数,它将接受用户输入“roller_diameter”,找到给定直径与固定直径的比率并将其转换为整数个“段”。我不是程序员(我正在使用互联网资源学习 Python [2.7])并且正在努力解决 TypeError: can't multipy sequence by non-int type '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']
TraceBack 是:
Traceback (most recent call last):
File "\\datasvr\users\rioliver\Python2.7\dict_test_v2.py", line 24, in <module>
R['segments'] = int(round(rollers[3]['segments']*roller_diameter/plate_diameter))
TypeError: can't multiply sequence by non-int of type 'float'
当您运行此代码时,您输入的直径无关紧要(我一直使用 85、95、110、120),但使用的数字没有区别。我希望它采用任何数字(整数或浮点数)并舍入任何浮点数。