亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

嘗試通過用戶輸入關鍵字“exit”來打破 while 循環。

嘗試通過用戶輸入關鍵字“exit”來打破 while 循環。

牧羊人nacy 2023-09-26 14:04:40
你好,我正在嘗試編寫我的第一個程序,只是一個簡單的 SQLite 3 程序來熟悉它。首先,該計劃的目標是創建一個表來保存考古動物遺骸的基本數據(因為他們對遺骸進行編目的方式是古老的自動取款機)。我的代碼中的問題從第 16-35 行開始,我嘗試創建一個循環來獲取用戶輸入,然后將該數據插入表/目錄中。我試圖讓程序識別關鍵字“exit”以退出循環。我一開始嘗試使用帶有 if & else 語句的 for 循環,但沒有成功。我查看了其他幾個類似的問題來尋求幫助,我最近的嘗試是嘗試切換到 while 循環。使用提供的當前代碼,輸入循環繼續進行并忽略關鍵字“exit”。while input == 'exit'或反之亦然while input != 'exit'。我還嘗試導入 sys 并讓關鍵字“exit”使用 sys.exit() ,這只會使程序無法運行(也許我將其放置在循環中太早)。我嘗試為 sys.exit() 和 break 定義函數,這也給出了關鍵字被忽略的相同問題。(我最初是用pycharm編寫的,開始使用Visual Studio,因為社區版pycharm不再包含數據庫工具)(正如你所看到的,我的代碼是程序性的,我仍在努力對OOP充滿信心)(我將數據庫放在:內存:在下面的示例中)先感謝您。如果我沒有提供有關我的問題的更簡潔的信息,我深表歉意,并且很樂意提供任何其他需要的信息。import sqlite3conn = 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:if input != 'exit':    print("Please enter individual specimen data: ")    c_number = input('Catalog #: ')    c_type = input('Type of Specimen: ')    c_taxon = input('Taxon: ')    c_species = input('Species: ')    c_part = input('Body Part: ')    c_age = input('Estimated Age: ')    c_layer = input('Sedimentary Layer: ')    c_notes = input('Notes: ')    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()    print('Specimen data entered successfully.')else:    if input == 'exit':        breakc.execute("""CREATE VIEW catalog (ASSELECT * FROM catalog;""")conn.close()
查看完整描述

2 回答

?
千萬里不及你

TA貢獻1784條經驗 獲得超9個贊

input是一個函數,返回用戶輸入的值。

if input != 'exit':永遠為真,因為input是一個函數,并且永遠不會等于 'exit'

您需要檢查輸入的返回值以查看它是否與字符串“exit”匹配。


編輯:嘗試以下操作- 如果您有更多提示或沒有提示,則此選項應該是“可擴展的”。但有很多方法可以實現您想要做的事情。以下只是其中之一。我添加了評論,因為您似乎是 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()


查看完整回答
反對 回復 2023-09-26
?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

如果沒有詳細介紹您的代碼,我相信它會因識別錯誤而失?。?/p>


python 要求您在 while 循環內縮進代碼,因此它應該如下所示。


while True:

    if input != 'exit':

        print("Please enter individual specimen data: ")

        ...

第二個問題是您從未創建過該變量input。當你測試時if input == 'exit':它會失敗。您需要決定用戶在哪一點可以選擇鍵入exit,將其保存到變量中并測試它,大致如下(我調用變量userinput是為了不覆蓋input函數):


while True:

    userinput = input( 'type exit to exit' )

    if userinput != 'exit':

        print("Please enter individual specimen data: ")

        ...


查看完整回答
反對 回復 2023-09-26
  • 2 回答
  • 0 關注
  • 205 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號