用户输入选择使用while循环,如果在Python
问题描述:
圈我是新来的Python所以这可能是一些非常基本的。我发现在Stackoverflow和其他地方的类似问题,但不完全一样。用户输入选择使用while循环,如果在Python
我试图写一个Python程序来更新SQLite数据库。该数据库有三列,项目,数量,价格。以前,我通过将这些列的每个值插入到代码中来更新数据库,但现在我想用用户输入来做同样的事情。
我希望你从我创建了3个功能创建一个表,将数据插入到表中,一个查看表中存在的数据我的代码看。
使用可变user_choice
然后我问用户他们想要与程序做什么。 我尝试首先通过将输入转换为字符串来处理错误,其次将其改为小写,然后使用while循环。如果输入不是i或v,或者如果输入被验证,则应该满足条件以退出循环,while循环应该循环。
的问题是在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())
答
你犯了一个容易解决的错误:)。所有你需要做的就是改变这一行:
user_choice=user_choice.lower
这一个:
user_choice=user_choice.lower()
会出现此线两次,一次while循环外,一旦进入,所以一定要同时改变。问题是,你没有调用lower()
函数,因为你最后没有括号。
谢谢!显然我还不能赞成,但请代之以感谢。 – Jimmy9zz
总是乐于帮助! – Steampunkery