2017-10-07 12 views
0

私はPythonには新しいので、これはおそらくかなり基本的なものです。私はStackoverflowと他の場所で同様の質問を見つけましたが、まったく同じではありません。whileループとifループを使ったユーザー入力の選択

私はPythonプログラムを作成してSqliteデータベースを更新しようとしています。データベースには、項目、数量、価格の3つの列があります。以前は、これらの各列の値をコードに挿入してデータベースを更新しましたが、今はユーザー入力を使用して同じことをしたいと思います。

私は、テーブルを作成し、テーブルにデータを挿入し、テーブルにデータを表示する3つの関数を作成したことを私のコードから見ていただければ幸いです。

変数user_choiceを使用して、ユーザーがプログラムで何をしたいかを尋ねます。 まず、入力を文字列に変換し、次に小文字に変更する、そして3番目にwhileループを使用してエラーを処理しようとします。 whileループは、入力がiまたはvのいずれでもない場合にループするか、入力が検証される場合、ループを終了するために条件が満たされる必要があります。

私は信じているwhileループで問題が発生しています。変数は決して検証されず、常にwhileループに入り、そこにとどまります。しかし、それでもループするたびに、変数user_choiceが変更される可能性はありますが、再度検証されることはありません。

誰かがこれに間違っていることを教えてもらえますか?私は学びたいと思っています。

import sqlite3 

def create_table(): 
    conn=sqlite3.connect("lite.db") 
    cur=conn.cursor() 
    cur.execute("CREATE TABLE IF NOT EXISTS store (item TEXT, quantity INTEGER, price REAL)") 
    conn.commit() 
    conn.close() 

def insert_data(item, quantity, price): 
    conn=sqlite3.connect("lite.db") 
    cur=conn.cursor() 
    cur.execute("INSERT INTO store VALUES (?,?,?)",(item, quantity, price)) 
    conn.commit() 
    conn.close() 

def view_data(): 
    conn=sqlite3.connect("lite.db") 
    cur=conn.cursor() 
    cur.execute("SELECT * FROM store") 
    rows=cur.fetchall() 
    conn.close() 
    return rows 

create_table() 

user_choice=str(input("What would you like to do? \n Insert data (I) \n View data (V) \n Enter your choice, I or V: ")) 
user_choice=user_choice.lower 
print(user_choice) 

while user_choice not in ['i','v']: 
    print ("Your choice is invalid. Please try again.") 
    user_choice=input("Choose I or V: ") 
    user_choice=user_choice.lower 

if user_choice == 'i': 
    user_input = input("Enter the item, quantity and price you want to update: ") 
    input_list = user_input.split(',') 
    item=str(input_list[0]) 
    quantity=int(input_list[1]) 
    price=float(input_list[2]) 
    insert_data(item,quantity,price) 
elif user_choice == 'v': 
    print(view_data()) 

答えて

0

あなたは簡単に修正可能な間違いをしました。このいずれかに

user_choice=user_choice.lower 

:あなたがしなければならないのは、この行を変更している

user_choice=user_choice.lower() 

この行は、一度あなたのwhileループの外と中に入ると、2回出現するので、あなたは両方を変更してください。問題は、末尾にかっこがないため、lower()関数を呼び出していないということでした。

+0

ありがとうございました!明らかに私はまだupvoteことはできませんが、代わりに感謝を取る。 – Jimmy9zz

+0

いつもお手伝いしてうれしい! – Steampunkery

関連する問題