问题乘以一个浮动值
Issue multiplying a floating value
我是 python 的新手,非常感谢您的帮助!
我正在编写一个简单的代码来读取 GPS 数据并打印速度值。
GPS 发送这样的串行文本行:
$GNRMC,055945.00,A,3509.40388,N,10642.56412,W,0.080,,060321,,,D*72
$GNVTG,,T,,M,0.080,N,0.148,K,D*3D
$GNGGA,055945.00,3509.40388,N,10642.56412,W,2,12,0.64,1581.1,M,-23.9,M,,0000*4E
$GNGSA,A,3,29,05,18,15,13,20,23,25,51,46,26,16,1.20,0.64,1.02*1E
$GNGSA,A,3,65,87,88,72,66,79,81,,,,,,1.20,0.64,1.02*10
我的代码目前使用 if 语句查找正确的行和正确的值:
import serial
import time
gps = serial.Serial("/dev/serial0", baudrate = 9600)
while True:
line = gps.readline()
data = line.decode().split(",")
if data[0] == "$GNRMC":
if data[2] == "A":
if data[4] == "N":
if data[6] =="W":
knotdata = data[7]
mphdata = knotdata * 1.15
print(mphdata)
但是我收到以下错误:
Traceback (most recent call last):
File "txgpsreadconv.py", line 15, in <module>
mphdata = knotdata * 1.15
TypeError: can't multiply sequence by non-int of type 'float'
我尝试了很多不同的方法来解决这个问题,但都没有成功。我确信解决方案很简单,我只是没有足够的经验来解决这个问题,所以非常感谢您的帮助!
因为你的 data[7]
是一个浮点变量,你可以使用类型转换 float
mphdata = float(knotdata) * 1.15
回溯表明knotdata
是一个序列,不是可以乘以浮点数的数据类型。
本质上,您是在尝试乘以表示数值而不是数值本身的字符串,因此您应该在运算前进行转换:
knotdata = float(data[7])
您还可以像这样改进 if 语句的结构:
if data[0:8:2] == ["$GRNMC", "A", "N", "W"]:
print(float(data[7]) * 1.15)
我是 python 的新手,非常感谢您的帮助! 我正在编写一个简单的代码来读取 GPS 数据并打印速度值。 GPS 发送这样的串行文本行:
$GNRMC,055945.00,A,3509.40388,N,10642.56412,W,0.080,,060321,,,D*72
$GNVTG,,T,,M,0.080,N,0.148,K,D*3D
$GNGGA,055945.00,3509.40388,N,10642.56412,W,2,12,0.64,1581.1,M,-23.9,M,,0000*4E
$GNGSA,A,3,29,05,18,15,13,20,23,25,51,46,26,16,1.20,0.64,1.02*1E
$GNGSA,A,3,65,87,88,72,66,79,81,,,,,,1.20,0.64,1.02*10
我的代码目前使用 if 语句查找正确的行和正确的值:
import serial
import time
gps = serial.Serial("/dev/serial0", baudrate = 9600)
while True:
line = gps.readline()
data = line.decode().split(",")
if data[0] == "$GNRMC":
if data[2] == "A":
if data[4] == "N":
if data[6] =="W":
knotdata = data[7]
mphdata = knotdata * 1.15
print(mphdata)
但是我收到以下错误:
Traceback (most recent call last):
File "txgpsreadconv.py", line 15, in <module>
mphdata = knotdata * 1.15
TypeError: can't multiply sequence by non-int of type 'float'
我尝试了很多不同的方法来解决这个问题,但都没有成功。我确信解决方案很简单,我只是没有足够的经验来解决这个问题,所以非常感谢您的帮助!
因为你的 data[7]
是一个浮点变量,你可以使用类型转换 float
mphdata = float(knotdata) * 1.15
回溯表明knotdata
是一个序列,不是可以乘以浮点数的数据类型。
本质上,您是在尝试乘以表示数值而不是数值本身的字符串,因此您应该在运算前进行转换:
knotdata = float(data[7])
您还可以像这样改进 if 语句的结构:
if data[0:8:2] == ["$GRNMC", "A", "N", "W"]:
print(float(data[7]) * 1.15)