2 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊
input
是一個(gè)函數(shù),返回用戶輸入的值。
if input != 'exit':
永遠(yuǎn)為真,因?yàn)?code>input是一個(gè)函數(shù),并且永遠(yuǎn)不會(huì)等于 'exit'
您需要檢查輸入的返回值以查看它是否與字符串“exit”匹配。
編輯:嘗試以下操作- 如果您有更多提示或沒有提示,則此選項(xiàng)應(yīng)該是“可擴(kuò)展的”。但有很多方法可以實(shí)現(xiàn)您想要做的事情。以下只是其中之一。我添加了評(píng)論,因?yàn)槟坪跏?python 新手!
import sqlite3
conn = sqlite3.connect(':memory:')
c = conn.cursor()
cursor = conn.cursor()
c.execute("""CREATE TABLE IF NOT EXISTS catalog (
? ? ? ?number integer NOT NULL PRIMARY KEY autoincrement,
? ? ? ?type text NOT NULL,
? ? ? ?taxon text,
? ? ? ?species text NOT NULL,
? ? ? ?part text NOT NULL,
? ? ? ?age integer,
? ? ? ?layer text,
? ? ? ?notes text
? ? ? ?)""")
while True:
? ? ? print('Please enter individual specimen data: ')
? ? ? input_prompts = [
? ? ? ? 'Catalog #: ',
? ? ? ? 'Type of Specimen: ',
? ? ? ? 'Taxon: ',
? ? ? ? 'Species: ',
? ? ? ? 'Body Part: ',
? ? ? ? 'Estimated Age: ',
? ? ? ? 'Sedimentary Layer: ',
? ? ? ? 'Notes: '
? ? ? ]
? ? ? responses = []
? ? ? response = ''
? ? ? for prompt in input_prompts: # loop over our prompts
? ? ? ? response = input(prompt)
? ? ? ? if response == 'exit':
? ? ? ? ? break # break out of for loop
? ? ? ? responses.append(response)
? ? ??
? ? ? if response == 'exit':
? ? ? ? break # break out of while loop
? ? ? # we do list destructuring below to get the different responses from the list
? ? ? c_number, c_type, c_taxon, c_species, c_part, c_age, c_layer, c_notes = responses
? ? ? cursor.execute("""
? ? ? ? ? INSERT OR IGNORE INTO catalog(number, type, taxon, species, part, age, layer, notes)
? ? ? ? ? VALUES (?,?,?,?,?,?,?,?)
? ? ? ? ? """,
? ? ? ? ? ? ? ? ? ? ?(
? ? ? ? ? c_number,
? ? ? ? ? c_type,
? ? ? ? ? c_taxon,
? ? ? ? ? c_species,
? ? ? ? ? c_part,
? ? ? ? ? c_age,
? ? ? ? ? c_layer,
? ? ? ? ? c_notes,
? ? ? ? ? ))
? ? ? conn.commit()
? ? ? responses.clear() # clear our responses, before we start our new while loop iteration
? ? ? print('Specimen data entered successfully.')
c.execute("""CREATE VIEW catalog
AS
SELECT * FROM catalog;
""")
conn.close()

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊
如果沒有詳細(xì)介紹您的代碼,我相信它會(huì)因識(shí)別錯(cuò)誤而失敗?
python 要求您在 while 循環(huán)內(nèi)縮進(jìn)代碼,因此它應(yīng)該如下所示。
while True:
if input != 'exit':
print("Please enter individual specimen data: ")
...
第二個(gè)問題是您從未創(chuàng)建過該變量input。當(dāng)你測(cè)試時(shí)if input == 'exit':它會(huì)失敗。您需要決定用戶在哪一點(diǎn)可以選擇鍵入exit,將其保存到變量中并測(cè)試它,大致如下(我調(diào)用變量userinput是為了不覆蓋input函數(shù)):
while True:
userinput = input( 'type exit to exit' )
if userinput != 'exit':
print("Please enter individual specimen data: ")
...
添加回答
舉報(bào)