前提・実現したいこと
多重ループの中にあるwhileに、if/elif/else条件が設定されています。
ifとelifの条件は少し異なるものの、大部分が同じ内容です。
統合させコードをすっきりさせたいです。アドバイスをいただけたら大変助かります。
location = input() という文を入れていまして、
locationに与えられた文字列が「HOME」だったらif、「OFFICE」だったらelifに移ります。それ以外はelse。if/elif内では最初に「HOME」「OFFICE」の表記を「Home」「Office」に直す文を与えています。しかしながら、そのあとに続く命令はif/elifどちらも全く同じです。
該当のソースコード
以下、抜粋になります。
python3
1 inputCheck = True 2 while inputCheck: 3 location = input("Location: ") 4 location = location.upper() 5 if len(location) == 0: 6 print("No data.") 7 inputCheck = False 8 9 elif len(location) > 0: 10 checkLocation = True 11 while checkLocation: 12 13#以下のif/elifが修正したい部分になります。 14 15 if location == "HOME" : 16 location = "Home" 17 listing = location + "." 18 listings.append(listing) 19 output = " It is at " + location + "." 20 print(output) 21 checkLocation = False 22 inputCheck = False 23 24 elif location == "OFFICE": 25 location = "Office" 26 listing = location + "." 27 listings.append(listing) 28 output = " It is at " + location + "." 29 print(output) 30 checkLocation = False 31 inputCheck = False 32 33 else: 34 checkLocation = False 35
試したこと
追加でwhile(listPrint)を作って試してみましたが、うまくいきませんでした。
挿入する場所が間違っているのでしょうか。
inputCheck = True while inputCheck: location = input("Location: ") location = location.upper() if len(location) == 0: print("No data.") inputCheck = False elif len(location) > 0: checkLocation = True while checkLocation: #if/elif文を最小限に修正し・・・ if location == "HOME" : location = "Home" listPrint = True elif location == "OFFICE": location = "Office" listPrint = True else: checkLocation = False #ここにlistPrintを追加しました。 listPrint = False while listPrint == True: listing = location + "." listings.append(listing) output = " It is at " + location + "." print(output) listPrint = False checkLocation = False inputCheck = False
補足情報(FW/ツールのバージョンなど)
python3.8.2
回答5件
あなたの回答
tips
プレビュー