私は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())
ありがとうございました!明らかに私はまだupvoteことはできませんが、代わりに感謝を取る。 – Jimmy9zz
いつもお手伝いしてうれしい! – Steampunkery