如何解决如何使 For 循环中的迭代更有效?
我想使用 i 变量增加 1。应该是 [0x0]、[0x1] 和 [0x2] 应该是 [0xi],但是当我尝试这样做时它给了我一个错误。如何提高效率?
另外,[0x0] 是什么类型的数据?我以前从未遇到过这种情况。
我尝试过的东西:
- 使用“%”在另一个变量中声明一个变量
- 将数字放入数组中,然后迭代一个
- 尝试使用
"<characters> + <variable> + <characters>"
放置另一个变量
代码:
for i in range(0,296,1):
time.sleep(5)
print(" ")
bus.write_i2c_block_data(0x2C,0x03,[0x0])
bus.write_i2c_block_data(0x2C,0x01,[0x0])
data = bus.read_byte_data(0x2C,0x01)
res_1 = (data / 256.0 ) * 10.0
data = bus.read_byte_data(0x2C,0x03)
res_2 = (data / 256.0 ) * 10.0
print "Resistance Channel-0 : %.2f K" %res_1
print "Resistance Channel-1 : %.2f K" %res_2
print(" ")
bus.write_i2c_block_data(0x2C,[0x1])
bus.write_i2c_block_data(0x2C,[0x1])
data = bus.read_byte_data(0x2C,[0x2])
bus.write_i2c_block_data(0x2C,[0x2])
data = bus.read_byte_data(0x2C,0x03)
res_2 = (data / 256.0 ) * 10.0
print "Resistance Channel-0 : %.2f K" %res_1
print "Resistance Channel-1 : %.2f K" %res_2
解决方法
0x2C
、0x03
、0x0
、0x1
等都只是 int
以十六进制表示的文字。结果值与 44
、3
、0
、1
等相同。您的函数正在将 int
值转换为其他类型.
以下内容完全相同:
bus.write_i2c_block_data(0x2c,0x03,[0x1])
bus.write_i2c_block_data(44,3,[i]) # Assuming i == 1
完整,
for i in range(0,296,1):
time.sleep(5)
print(" ")
bus.write_i2c_block_data(0x2C,[i])
bus.write_i2c_block_data(0x2C,0x01,[i])
data = bus.read_byte_data(0x2C,0x01)
res_1 = (data / 256.0 ) * 10.0
data = bus.read_byte_data(0x2C,0x03)
res_2 = (data / 256.0 ) * 10.0
print "Resistance Channel-0 : %.2f K" %res_1
print "Resistance Channel-1 : %.2f K" %res_2