У меня есть довольно простая Python программа, которая должна предлагать пользователю выбрать:
- показать алфавитный список всех состояний, их столиц и цветов.
- показывает указанное c состояние с его птицей.
- обновляет птицу для указанного c состояния.
- выход.
Моя проблема с вариантом 2. Когда я выбираю вариант 2 и набираю состояние, выдается эта ошибка:
in display_data
print("State name: ", state_data.state_name, " , Capital: ", state_data.capital, " , Bird: ", state_data.bird)
AttributeError: 'state' object has no attribute 'bird'
Ниже приведен код. Я выбираю только первые два состояния данных для экономии места.
class state:
def __init__(self, state_name, capital, flower):
self.state_name = state_name
self.capital = capital
self.flower = flower
def update_bird(self, bird):
self.bird = bird
def update_bird_for_State(state_list_bird, state_name, bird_name):
for state in state_list_bird:
if state.state_name == state_name:
state.update_bird(bird_name)
def display_sorted_states(state_list_flower):
for state in sorted([state.state_name for state in state_list_flower]):
for state_data in state_list_flower:
if state == state_data.state_name:
print("State name: ", state_data.state_name, " , Capital: ", state_data.capital, " , Flower: ", state_data.flower)
def display_data(state_list_bird, state):
data_found = False
for state_data in state_list_bird:
if state_data.state_name == state:
data_found = True
print("State name: ", state_data.state_name, " , Capital: ", state_data.capital, " , Bird: ", state_data.bird)
if data_found == False:
print("No data found.")
if __name__ == "__main__":
state_list_flower = []
s = state('Alabama','Montgomery', 'Camellia')
state_list_flower.append(s)
s = state('Alaska','Juneau', 'Forget Me Not')
state_list_flower.append(s)
state_list_bird = []
s = state('Alabama','Montgomery', 'Yellowhammer')
state_list_bird.append(s)
s = state('Alaska','Juneau', 'Willow Ptarmigan')
state_list_bird.append(s)
user_input = 1
while(user_input in [1,2,3,4]):
print("\n1. Display all U.S. States in Alphabetical order along with Capital and Flower")
print("2. Search for a specific state and display the appropriate Capital and Bird")
print("3. Update a Bird for a specific state")
print("4. Exit the program")
user_input = int(input("\nEnter choices: "))
if(user_input == 1):
display_sorted_states(state_list_flower)
elif(user_input == 2 ):
state_name = input("\nEnter State Name: ")
display_data(state_list_bird, state_name)
elif(user_input == 3):
state_name = input("\nEnter State Name: ")
bird_name = input("\nEnter Bird Name: ")
update_bird_for_State(state_list_bird, state_name, bird_name)
elif(user_input == 4 ):
break