質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
87.20%
if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Python

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

解決済

if/elifの条件が似ているのでコードを修正し短くすっきりさせたい

pystudent
pystudent

総合スコア0

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Python

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

5回答

0評価

3クリップ

45閲覧

投稿2020/05/04 01:52

前提・実現したいこと

多重ループの中にあるwhileに、if/elif/else条件が設定されています。
ifとelifの条件は少し異なるものの、大部分が同じ内容です。
統合させコードをすっきりさせたいです。アドバイスをいただけたら大変助かります。

location = input() という文を入れていまして、
locationに与えられた文字列が「HOME」だったらif、「OFFICE」だったらelifに移ります。それ以外はelse。if/elif内では最初に「HOME」「OFFICE」の表記を「Home」「Office」に直す文を与えています。しかしながら、そのあとに続く命令はif/elifどちらも全く同じです。

該当のソースコード

以下、抜粋になります。

python3

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" listing = location + "." listings.append(listing) output = " It is at " + location + "." print(output) checkLocation = False inputCheck = False elif location == "OFFICE": location = "Office" listing = location + "." listings.append(listing) output = " It is at " + location + "." print(output) checkLocation = False inputCheck = False else: checkLocation = False

試したこと

追加で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

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

Kenji.Noguchi
Kenji.Noguchi

2020/05/11 23:26

Pythonらしいコードを俗にパイソニックと言いますが、if location == X, elif location == Y, ... と言う感じで同じ変数をチェックしている場合はdictに置き換えるとパイソニックです。また入力がされたかどうかもif len(location) == 0とせずにif not locationとするだけでlocationがNoneまたは空文字列であることがチェックできます。これもまたパイソニックな書き方です。
pystudent
pystudent

2020/05/12 07:08

そうなんですね。まだPython勉強し始めたばかりで知りませんでした。ご丁寧に教えていただきまして大変ありがとうございます。さっそく自分のコードに適用させていただきたいと思いますm(__)m

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Python

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