🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

1438閲覧

openweatherから3時間ごとの天気を取得するプログラムで、正常に動くのにエラーが発生している

SZR0601

総合スコア22

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2021/03/28 04:28

編集2021/03/28 04:29

知りたいこと

以下のプログラムは自分の意図したとおりに動くのですが、なぜかエラーが二つ検出されており、何が問題で何が原因で発生しているか知りたいです。

エラーが発生しているプログラム

エラーが発生しているプログラムの動作説明として、以下となります。

  1. openweatheAPIから3時間ごとの天気データを取得する
  2. 取得したデータから予報日時 天気 気温 体感温度の要素をリスト格納する
  3. リストに格納した内容ををtkinterで表示していく

ソースコードは以下となります。
エラーは発生していますが、意図したとおりの動作が実行できています。

Python

1import tkinter 2import requests 3import json 4 5#APIからjsonデータを取得 6def getJsonData(): 7 #天気APIにアクセス 8 API_KEY = "a2814360a66593c442145787f66be075" 9 city_ID = "1850147" 10 api = "http://api.openweathermap.org/data/2.5/forecast?units=metric&id={cityID}&APPID={key}&lang=ja" 11 url = api.format(cityID = city_ID, key = API_KEY) 12 print(url) 13 #requestsでAPIからjsonデータを取得 14 req = requests.get(url) 15 #取得したデータをjsonにパース 16 data= req.json() 17 print(data["list"][1]["dt_txt"]) 18 return data 19 20#予報日取得 21def getDate(data): 22 Dates = [] 23 for jsonDatas in data["list"]: 24 Dates.append(jsonDatas["dt_txt"]) 25 return Dates 26 27#天気データを取得 28def getWeather(data): 29 weathers = [] 30 for jsonDatas in data["list"]: 31 weathers.append(jsonDatas["weather"][0]["description"]) 32 return weathers 33 34#気温データを取得 35def getTempture(data): 36 temptures = [] 37 for jsonDatas in data["list"]: 38 temptures.append(jsonDatas["main"]["temp"]) 39 return temptures 40 41#体感温度データを取得 42def getFeelsTemp(data): 43 feelsTemptures = [] 44 for jsonDatas in data["list"]: 45 feelsTemptures.append(jsonDatas["main"]["feels_like"]) 46 return feelsTemptures 47 48#APIデータを取得 49data = getJsonData() 50 51# Tkクラス生成 52frm = tkinter.Tk() 53# 画面サイズ 54frm.geometry('200x600') 55# 画面タイトル 56frm.title('明日の天気') 57 58for dispDatas in list(zip( getDate(data), getWeather(data), getTempture(data), getFeelsTemp(data) )): 59 feelstemp = tkinter.Label(frm, text="日付:" + dispDatas[0]) 60 feelstemp.pack(side="top") 61 62 weather = tkinter.Label(frm, text="天気:" + dispDatas[1], fg="black",bg="white") 63 weather.pack(side="top") 64 65 tempture = tkinter.Label(frm, text="気温:" + str(dispDatas[2])) 66 tempture.pack(side="top") 67 68 feelstemp = tkinter.Label(frm, text="体感温度:" + str(dispDatas[3])) 69 feelstemp.pack(side="top") 70 71# 画面をそのまま表示し続ける 72frm.mainloop() 73

#発生しているエラー(質問したい部分)
ここからが質問したい部分で、上記ソースコード上で以下の問題が発生しております。

builtins.pyi  SyntaxError: non-default argument follows default argument  SyntaxError: non-default argument follows default argument

builtins.pyiを確認すると、以下の部分でエラーが発生しておりました

if sys.version_info >= (3,): @overload def max(__arg1: _T, __arg2: _T, *_args: _T, key: Callable[[_T], Any] = ...) -> _T: ... @overload def max(__iterable: Iterable[_T], *, key: Callable[[_T], Any] = ...) -> _T: ... @overload #ココでエラー def max(__iterable: Iterable[_T], *, key: Callable[[_T], Any] = ..., default: _VT) -> Union[_T, _VT]: ...  else: @overload def max(__arg1: _T, __arg2: _T, *_args: _T, key: Callable[[_T], Any] = ...) -> _T: ... @overload def max(__iterable: Iterable[_T], *, key: Callable[[_T], Any] = ...) -> _T: ... if sys.version_info >= (3,): @overload def min(__arg1: _T, __arg2: _T, *_args: _T, key: Callable[[_T], Any] = ...) -> _T: ... @overload def min(__iterable: Iterable[_T], *, key: Callable[[_T], Any] = ...) -> _T: ... @overload #ココでエラー def min(__iterable: Iterable[_T], *, key: Callable[[_T], Any] = ..., default: _VT) -> Union[_T, _VT]: ...

上記の何が問題で、原因は何なのかという2点について教えていただきたいです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

#解決いたしました
IDEを再起動したら解消いたしました、ご確認いただいた方がいたら申し訳ございません。
ありがとうございました。

投稿2021/03/28 04:34

SZR0601

総合スコア22

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問