Je suis nouveau sur Python, donc c'est probablement quelque chose de très basique. J'ai trouvé des questions similaires sur Stackoverflow et d'autres endroits, mais pas exactement la même chose. J'essaie d'écrire un programme Python pour mettre à jour une base de données SQLite. La base de données a trois colonnes, article, quantité, prix. Auparavant, j'avais mis à jour la base de données en insérant ces valeurs pour chacune de ces colonnes dans mon code, mais maintenant je veux faire la même chose en utilisant l'entrée de l'utilisateur.Choix de l'entrée de l'utilisateur en utilisant while boucles et si boucles en python
J'espère que vous verrez à partir de mon code que j'ai créé 3 fonctions pour créer une table, insérer des données dans la table et une pour voir les données présentes dans la table.
En utilisant une variable user_choice
Ensuite, je demande à l'utilisateur ce qu'ils veulent faire avec le programme. Je tente de gérer les erreurs d'abord en convertissant l'entrée en chaîne, ensuite en la changeant en minuscule, et troisièmement en utilisant une boucle while. La boucle while doit boucler si l'entrée n'est pas i ou v, ou si l'entrée est validée, la condition doit être satisfaite pour quitter la boucle.
Le problème se produit à la boucle while je crois. La variable n'est jamais validée et elle entre toujours dans la boucle while et y reste. Même alors, à chaque fois qu'il boucle, il est possible que la variable user_choice
soit modifiée, mais à nouveau, elle ne sera jamais validée.
Quelqu'un pourrait-il me dire ce qui ne va pas? Je suis désireux d'apprendre.
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())
Merci beaucoup! Apparemment, je ne peux pas encore l'emporter, mais prenez mes remerciements à la place. – Jimmy9zz
Toujours heureux de vous aider! – Steampunkery