2017-11-20 15 views
0

ユーザーが新しい項目をリストに追加したい。ユーザーが "q"を入力すると、プログラムを終了してからこのリストを別の機能の入力として使用します。 しかし、私は「Q」などのループから抜け出すことはできませんがリストに追加されます。関数の外側で終了するためにユーザーが "q"を入力した後にプログラムが終了しない - ループ中のPython while

また
base = ["item1", "item2"] 

def add_item(item, base=base): 
    item=item.upper() 
    base.append(item) 
    return base 

while True: 
    user_input = add_item(input("Add an item or enter q to finish: ")) 
    if user_input == "Q": 
     break 

    else: 
     print(f"New item added: {user_input}") 
print("Added") 

、どのように私は後で別の関数の入力として最終出力(最終的なリスト)を使用することができますか? 商品が既にリストに入っているかどうかを確認してから、この商品で何かをしたいと思います。 私は多分私はこのような「グローバル」を使用すべきであるという一般的な考え方があります。

def check(item): 
    global base 
    if item in base: 
    print("in the list") 
    else: 
    print("not here") 

をより良い方法はありますか?

+3

'user_input'は' add_item'の戻り値を保持します。 'add_item'は文字列' 'Q" 'を返しません。 'add_item'を呼び出す前に、ユーザー入力を確認する必要があります。 – khelwood

+2

あなたのコードでも大文字のQをチェックしています。あなたの質問では、あなたが "q"(アンダースコアq)を入力したときにあなたは言うでしょう。アンダースコアqはあなたのプログラムを決して終わらせません。 –

+0

でも大文字に変更しています – Ank12

答えて

0

user_inputはユーザが入力したプログラムの実際の入力ではなく、関数の戻り値ですから!

in = input("Add an item or enter q to finish: ") 
if in == "Q": 
     break 
else: 
     user_input = add_item() 
関連する問題