最終代碼將列印狀態之間的距離。我正在嘗試列印帶有編號和垂直編號的州名稱的選單。我真的很難找到我的錯誤。
此代碼不會引發任何錯誤,它只會列印任何內容,為空。
state_data = """
LA 34.0522°N 118.2437°W
Florida 27.6648°N 81.5158°W
NY 40.7128°N 74.0060°W"""
states = []
import re
state_data1 = re.sub("[°N@°E]", "", state_data)
def process_states(string):
states_temp = string.split()
states = [(states_temp[x], float(states_temp[x 1]), float(states_temp[x 2])) for x in
range(0, len(states_temp), 3)]
return states
def menu():
for state_data in range(state_data1):
print(f'{state_data 1} {name[number]}')
uj5u.com熱心網友回復:
我的第一個猜測是,您的代碼不會列印任何沒有錯誤的內容,因為您實際上從未執行過process_airports()nor menu()。
您必須在腳本末尾這樣稱呼它們:
something = process_airports(airport_data1)
menu()
不過,這現在會引發一些錯誤。所以讓我們解決它們。該menu()函式將引發錯誤,因為既name沒有定義也沒有number定義,并且因為您試圖將range函式應用于字串 ( airport_data1) 而不是整數。
首先修復范圍錯誤:您在 for 回圈中混合了兩個想法:迭代串列中的元素airport_data1和迭代串列中元素的索引。
你必須選擇一個(我們稍后會看到你可以同時做這兩個),在這個例子中,我選擇迭代串列的索引。
然后,由于既不name也不number存在任何地方,它們將引發錯誤。您總是需要在某處宣告變數,但是,在這種情況下,它們根本不需要,所以讓我們洗掉它們:
def menu(data):
for i in range(len(data)):
print(f'{i 1} {data[i]}')
processed_airports = process_airports(airport_data1)
menu(processed_airports)
考慮data的是輸出process_airports()
現在提供一些一般性建議和改進。
首先,全域變數。請注意如何airport_data1在menu()函式內正常訪問,雖然它不推薦這樣做,但通常最好將變數作為引數顯式傳遞。
請注意,在我上面提出的函式中,每個變數都在函式本身中宣告,沒有來自更高范圍的資訊。同樣,這不是強制性的,但使代碼更易于使用和理解。
airport_data = """
Alexandroupoli 40.855869°N 25.956264°E
Athens 37.936389°N 23.947222°E
Chania 35.531667°N 24.149722°E
Chios 38.343056°N 26.140556°E
Corfu 39.601944°N 19.911667°E"""
airports = []
import re
airport_data1 = re.sub("[°N@°E]", "", airport_data)
def process_airports(string):
airports_temp = string.split()
airports = [(airports_temp[x], float(airports_temp[x 1]), float(airports_temp[x 2])) for x in
range(0, len(airports_temp), 3)]
return airports
def menu(data):
for i in range(len(data)):
print(f'{i 1} {data[i]}')
# I'm adding the call to the functions for clarity
data = process_airports(airport_data1)
menu(data)
列印的選單現在看起來像這樣:
1 ('Alexandroupoli', 40.855869, 25.956264)
2 ('Athens', 37.936389, 23.947222)
3 ('Chania', 35.531667, 24.149722)
4 ('Chios', 38.343056, 26.140556)
5 ('Corfu', 39.601944, 19.911667)
其次,這主要是供參考,但您可以通過回圈訪問enumerate()含義來訪問可迭代的索引和元素本身,以下函式將列印與帶有range(len(data)). 如果您需要同時使用元素本身和它的索引,這很方便。
def menu(data):
for the_index, the_element in enumerate(data):
print(f'{the_index 1} {the_element}')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/416895.html
標籤:
