example-code-2e/02-array-seq/match_lat_lon.py
2021-07-10 11:58:24 -03:00

33 lines
900 B
Python

"""
metro_lat_long.py
Demonstration of nested tuple unpacking::
>>> main()
| latitude | longitude
Mexico City | 19.4333 | -99.1333
New York-Newark | 40.8086 | -74.0204
São Paulo | -23.5478 | -46.6358
"""
# tag::MAIN[]
metro_areas = [
('Tokyo', 'JP', 36.933, (35.689722, 139.691667)),
('Delhi NCR', 'IN', 21.935, (28.613889, 77.208889)),
('Mexico City', 'MX', 20.142, (19.433333, -99.133333)),
('New York-Newark', 'US', 20.104, (40.808611, -74.020386)),
('São Paulo', 'BR', 19.649, (-23.547778, -46.635833)),
]
def main():
print(f'{"":15} | {"latitude":>9} | {"longitude":>9}')
for record in metro_areas:
match record: # <1>
case [name, _, _, (lat, lon)] if lon <= 0: # <2>
print(f'{name:15} | {lat:9.4f} | {lon:9.4f}')
# end::MAIN[]
if __name__ == '__main__':
main()