2013-11-13 2 views
0

У меня проблемы с текущей программой, которую я пишу.NameError: name 'countrychoice' не определен

Я разрешаю пользователю вводить страну, а затем город города в этой стране, а затем просматривать прогноз погоды для выбранного города с использованием API.

Я использую класс, например:

class requestChoice: 

    def __init__(self): 
     self.countrychoice = None 
     self.citychoice = None 

    def countryChoice(self): 
     self.countrychoice = input("Enter which country your city is in(in english): ") 

    def cityChoice(self): 
     self.citychoice = input("Enter the name of the city: ") 

И моя основная программа выглядит следующим образом:

from requestchoice import requestChoice 

import requests 

if __name__ == '__main__': 
    """Introducion""" 
    print ("\nThis program lets you see a weather forecast for your choosen city.") 

rc = requestChoice() 
while True: 
    print("\nWhen you have typed in country and city, press 3 in the menu to see the weather forecast for your choice.\n") 
    menu = input("\nPress 1 for contry\nPress 2 for city\nPress 3 to see forecast\nPress 4 to exit\n") 
    if menu == "1": 
     rc.countryChoice() 
    elif menu == "2": 
     rc.cityChoice() 
    elif menu == "3": 
     r = requests.get("http://api.wunderground.com/api/0def10027afaebb7/forecast/q/" + countrychoice + "/" + citychoice + ".json") 
     data = r.json() 
     try: 
      for day in data['forecast']['simpleforecast']['forecastday']: 
       print (day['date']['weekday'] + ":") 
       print ("Conditions: ", day['conditions']) 
       print ("High: ", day['high']['celsius'] + "C", '\n' "Low: ", day['low']['celsius'] + "C", '\n') 
     except Exception as e: 
      print ("\nHave you typed in the correct country and city?\nBecause we got a" ,e, "error") 
    else: 
     print ("\nGoodbye") 
     break 

Когда я запускаю свою программу, я получаю ошибку NameError: name 'countrychoice' is not defined. Это будет та же ошибка с citychoice. Я попытался создать список в своем классе и добавить countrychoice в список, но без везения. Как я должен заставить его работать по своему желанию?

+0

Можете ли вы пройти ** точную ** трассировку, пожалуйста? –

ответ

1

Вы собирающий ЗГ NameError здесь:

r = requests.get("http://api.wunderground.com/api/0def10027afaebb7/forecast/q/" + countrychoice + "/" + citychoice + ".json") 

, потому что у вас нет никаких имен countrychoice и citychoice определены. Возможно, вы хотели использовать вместо этого rc.countrychoice и rc.citychoice?

+0

Ах, конечно, Как глупо я чувствую себя ха-ха. Спасибо! – Bondenn

1

Вы должны получить к ним доступ с соответствующим именем объекта. В этом случае

rc.countrychoice 
rc.citychoice 

Таким образом, эта линия

r = requests.get("http://api.wunderground.com/api/0def10027afaebb7/forecast/q/" + countrychoice + "/" + citychoice + ".json") 

становится

r = requests.get("http://api.wunderground.com/api/0def10027afaebb7/forecast/q/" + rc.countrychoice + "/" + rc.citychoice + ".json") 
1

Вы должны использовать rc.countrychoice и rc.citychoice здесь

r = requests.get("http://api.wunderground.com/api/0def10027afaebb7/forecast/q/" + rc.countrychoice + "/" + rc.citychoice + ".json") 
Смежные вопросы