2017-04-07 63 views
1

我不能让我的代码比较两个数字,我希望它做的是查看数字是否更小,如果是的话我希望它打印“更小”if它不是那么我想要它结束。 lat.csv填充数字,如52.6169933,用户输入将非常相似。无法编辑的类型:float()<= lists()

import csv 
lat = float(input("Enter Location Latitude")) 
lat = lat - 0.01862 
x = 1 
with open('lat.csv') as f: 
    reader = csv.reader(f) 
    arraylat = list(reader) 
if float(lat) <= arraylat[x]: 
    print("is smaller") 
print("end") 

Traceback (most recent call last): 
    File "C:/Users/Ryan/Documents/python/Map/test.py", line 8, in <module> 
    if float(lat) <= arraylat[x]: 
TypeError: unorderable types: float() <= list() 
+1

'arraylat [x]'返回一个列表而不是'float'。 –

+0

我们可以看到你的'lat.csv'文件吗? –

+0

你正在重新分配经纬度,这是你想要做什么? – Priyank

回答

0

我看到一对夫妇的问题与你把示例代码,您应该可以,如果你经过任何的Python教程初学者自己解决。 假设我理解你的问题,

with open('lat.csv') as f: 
    reader = csv.reader(f) 

    for row in reader: 
     row = row.split(',') 
     is_smaller = False 
     for val in row: 
      if(lat <= float(val)): 
       print("is smaller") 
       is_smaller = True 
       break 
     if is_smaller == True: 
      break 
print("end") 

的is_smaller标志检查,如果大于输入大的值被发现,如果是,将停止搜索并打印“小” 这将有助于您阅读在csv上。

+0

我不认为这解决了问题。在这里,'arraylat'可能是一个2维或更多维数组,因此,'reader'一定是这样。通过遍历'reader',你基本上将内部数组存储到'row'中,然后尝试使用'float(row)'将'list'转换为'float'将导致TypeError。 –

+0

这是否会循环遍历所有lat.csv,因为我需要将用户输入与每一行进行比较。并打印每场比赛。我不明白你为什么使用row [0]应该是row [x],然后你可以通过增加1来遍历列表? – mRyan

+0

希望这些更改有所帮助! – Priyank

相关问题