列出地震的函数

2024-07-04 08:13:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我的功能是从这个网站上获取数据,收集地震的纬度、经度、深度和震级。第二个函数“colorCode”应该获取地震的深度并返回一个颜色值。这就是我被困的地方。我试图使数据成为float,这样我就可以使用if语句并将其与int进行比较,但它仍然表示不能将其转换为float。有什么想法吗?(如果我以不正确的格式发布代码,请原谅)

import urllib

#parseEarthquake: int --> list-of-float

def parseEarthquakeData(numberofearthquakes):
    URLonWeb = urllib.urlopen("http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_month.csv")
    lines = URLonWeb.readlines()
    numberoflines = len(lines)
    numberoftimes = 0
    index = 1
    myaccumalator = []
    for numberoftimes in range(numberofearthquakes):
        while index < (numberofearthquakes + 1):
            line = lines[index]
            data = line.split(",")
            latitude = float(data[1])
            longitude = float(data[2])
            depth = float(data[3])
            magnitude = float(data[4])
            if magnitude < 2.5:
                magnitude = 2.5
            myList = [[latitude, longitude, depth, magnitude]]
            myaccumalator = myaccumalator + myList
            index = index + 1
        return(myaccumalator)


#return [latitude, longitude, depth, magnitude]

def colorCode(numberofQuakes):
    data = parseEarthquakeData(2)
    data =str(data)
    realdata = data.split()
    if realdata[2] <34:
        print 'orange'
        if realdata[2] >=34<70:
            print 'yellow'
            if realdata[2] >=70<150:
                print 'green'
                if realdata[2] >=150<300:
                    print 'blue'
                    if realdata[2] >=300<500:
                        print 'purple'
                        if realdata[2] >=500:
                            print 'red'

Tags: dataindexiffloatlinesprintdepthlatitude
1条回答
网友
1楼 · 发布于 2024-07-04 08:13:47

Python有一个非常方便的csv.DictReader模块来实现您要实现的目标。我稍微修改了一下您的代码,使其更简短、更易读:

import urllib
import csv

#parseEarthquake: int  > list-of-float

def parseEarthquakeData(numberofearthquakes):
    URLonWeb = urllib.urlopen("http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_month.csv")
    lines = URLonWeb.readlines()
    content = csv.DictReader(lines)
    allEarthquakes = [line for line in content]
    return allEarthquakes[:numberofearthquakes]


#return [latitude, longitude, depth, magnitude]

def colorCode(numberofQuakes):
    data = parseEarthquakeData(2)
    for earthquake in data:
        depth = float(earthquake["depth"])
        print(depth)
        if depth <34:
            print 'orange'
        elif 34 <= depth <70:
            print 'yellow'
        if 70 <= depth <150:
            print 'green'

dictReader将每一行转换成一个字典,其中包含来自csv文件的相应头。这样做很好,因为与列表相比,结构化数据在字典中的可读性要高得多(您不必记住哪个位置是什么)。在

你也有一些问题的数字比较在你的颜色代码方法,比较你的与我改变它。我也不知道你想用data =str(data)实现什么

我没有实现整个颜色逻辑,但你应该能够适应你的需要。在

相关问题 更多 >

    热门问题