我是Python的新手,所以这可能是非常基础的东西。我在Stackoverflow和其他地方发现了类似的问题,但不完全相同。
我正在尝试编写一个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())
答案 0 :(得分:0)
你犯了一个容易修复的错误:)。你所要做的就是改变这一行:
Observable.fromEvent(window, 'scroll')
.map((event: any) => event.currentTarget)
.subscribe((event) => {
this._renderScrollBar(event);
});
let x = 0;
Observable.of(0, animationFrame)
.repeat()
.takeUntil(Observable.timer(1000))
.subscribe(() => console.log(x++));
}
对此:
user_choice=user_choice.lower
此行发生两次,一次在while循环之外,一次在内部,因此请确保更改两者。问题是,你没有调用user_choice=user_choice.lower()
函数,因为你最后没有括号。