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

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

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

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

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

Python

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

Q&A

解決済

1回答

343閲覧

python3 二重while文の中のif/for文が機能しない

pystudent

総合スコア10

while

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

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

Python

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

1グッド

1クリップ

投稿2020/05/05 16:23

前提・実現したいこと

A,B,C,D 4つのinput()文があります。
もしデータが空であればエラーメッセージを出し、もしDにREDまたはBLUEという値が入力されればoutput文を表示する(REDとBLUE以外の値が入力されたら受け付けずに再度同じ質問文が表示される)コードを作っています。

後半部分のDに入っている値がREDもしくはBLUEだったら・・という条件式が機能しません。
原因が分かれば教えていただきたいです。

該当のソースコード

python3

1ef list_input(a): 2 value = input(a) 3 if value == '': 4 print("No data.") 5 raise ValueError 6 return value 7 8alldata = [] 9keepAsking = True 10while keepAsking: 11 12 try: 13 tmp = [] 14 tmp.append(list_input("A: ")) 15 tmp.append(list_input("B: ")) 16 tmp.append(list_input("C: ")) 17 18 dataCheck = True 19 while dataCheck: 20 tmp.append(list_input("D: ")) 21 val = tmp[3] 22 val = val.upper() 23 24#ここらへん前後の条件文がうまく機能していません。ターミナルでREDと入力してもoutputが出てきません。 25 26 if val in ["RED", "BLUE"]: 27 for a,b,c,d in tmp: 28 output = "Result:" + a + " (" + b + ") " + c + d 29 print(output) 30 alldata.append(tmp) 31 dataCheck = False 32 33 except ValueError: 34 pass 35 36 anotherQuestion = True 37 while anotherQuestion: 38 record = input("Do you wish to enter another record? (Y/N) ") 39 if record == "YES": 40 anotherQuestion = False 41 elif record == "NO": 42 anotherQuestion = False 43 keepAsking = False 44 45print("END") 46

補足情報(FW/ツールのバージョンなど)

python3.8.2

DrqYuto👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

for a,b,c,d in tmp:でエラー(not enough values to unpack (expected 4, got 1))が発生しています。そのため処理が飛んでいます。
コードを見直してみてください。

投稿2020/05/05 17:02

meg_

総合スコア10607

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

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

pystudent

2020/05/07 01:16

ご指摘いただきありがとうございます。該当部分確認してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問