Ich baue ein einfaches Programm, um Mieter für meine Mietobjekte vorzusortieren. Das Programm stellt ihnen eine Reihe von Fragen, von denen einige eine "Ja" - oder "Nein" -Antwort erfordern, was ein boolescher Wert (wahr/falsch) wäre.Eingabe boolescher Werte mit Python
Das Problem ist, egal was Sie für die booleschen Eingaben antworten, die es als "1" aufzeichnet.
ich sqlite3 lokal bin mit den Daten zu speichern, hier ist der Code:
def enter_dynamic_data():
fname = input("First Name? ")
lname = input("Last Name? ")
email = input("Email? ")
phone = input("Phone? ")
criminal = bool(input("Have you ever been convicted of a crime? "))
evicted = bool(input("Have you ever been evicted? "))
income = bool(input("Do you have verifiable income of at least 3x the rent amount? "))
ref = bool(input("Do you have good rental references? "))
c.execute("INSERT INTO tenant_screening (firstname, lastname, email, phone, criminal, evicted, income, ref) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", (fname, lname, email, phone, criminal, evicted, income, ref))
Es ist, weil bool() -Funktion alles auf True (1) außer Dingen wie leere Listen/Tupel, keine, falsche oder leere Zeichenfolgen auswertet. Das Sagen von bool ("alles") wird immer als wahr bewertet, weil es etwas gibt. – Nf4r
So ziemlich das, was das Duplizieren angibt, ist, dass sqllite3 bools als 0, 1 gespeichert werden. * SQLite hat keine separate boolesche Speicherklasse *. [doc] (http://www.sqlite.org/datatype3.html) zur Referenz – idjaw
So einfach wie: answer = input(). lower() == "yes" ;. Sie können auch andere Prüfungen durchführen als: answer = int (input())> 100; etc.. – dinomoth