Python 如何重复一个问题,直到在一系列问题中输入有效信息?
我想问问题,如果我几乎回答完所有的问题,我在一个字符串中输入一个整数,它会重复问题,而不是像它那样从头开始重复 我试着把每个输入都放在一个循环中,并为无效的输入生成一个else,但这是低效的,而且不起作用Python 如何重复一个问题,直到在一系列问题中输入有效信息?,python,Python,我想问问题,如果我几乎回答完所有的问题,我在一个字符串中输入一个整数,它会重复问题,而不是像它那样从头开始重复 我试着把每个输入都放在一个循环中,并为无效的输入生成一个else,但这是低效的,而且不起作用 def create_entry(): c = connection.cursor() tables = ["Cpus", "Cores", "Manufactures", "Sockets"] print(tables) while True:
def create_entry():
c = connection.cursor()
tables = ["Cpus", "Cores", "Manufactures", "Sockets"]
print(tables)
while True:
tables_display = input("What Table Do Want To Make An Entry Too? ")
append_table_cpu = input("What Is The Name Of Your Cpu You Are Adding? ")
append_table_cost = input("How Much Does The Cpu You Are Adding Cost? ")
append_table_speed = input("How Fast Is The Cpu That You Are Adding?, Write Like This 2.00GHz")
append_table_cores = input("How Many Cores Does Your Cpu Have? ")
append_table_threads = input("How Many Threads Does The Cpu You Are Adding Have? ")
append_table_socket = input("What Type Of Socket Does Your Cpu Use? ")
tuple_insert = (tables_display, append_table_cpu, append_table_cost, append_table_speed, append_table_cores, append_table_threads, append_table_socket)
sql_query = ("INSERT INTO Cpus (Name,Cost,Speed_GHz,Cores,Threads,Socket) VALUES (?,?,?,?,?,?,?)")
c.execute(sql_query,tuple_insert)
results = c.fetchall()
for i in results:
print("Id: Manufactures: ".format(i[0],i[1]))
while True: #Puts Everything In A Loop
try:
option_1 = int(input("What Would You Like To Do To The Cpu Database, 1) Make An Entry, 2) Read The Data Or 3) Delete Data. Type 1, 2, ,3 "))
if option_1 == 1:
create_entry()
except:
print("Please Type A Valid Reply")
continue
我希望能够在数据库的字符串列中键入一个整数,或者像不存在的表名那样键入一个无效的答复,然后它会重复我从一开始就遇到的问题。请保留基本答案。您可以使用正则表达式验证输入。在一段时间内询问,如果输入与正则表达式匹配,则将输入添加到
答案中
并继续询问;如果没有,则显示消息并再次询问(继续循环)。下面是一个示例(代码摘录):
另外,最后一个循环将永远询问,不要忘记添加一个选项来停止询问并中断while循环。恕我直言,我不确定您是否完全理解while循环(第一个
while True:
循环可能需要一个中断
条件)。@DanteMarshall什么不起作用?你能说得更具体些吗?
import re
tables = ["Cpus", "Cores", "Manufactures", "Sockets"]
questions = [
("What Table Do You Want To Make An Entry To? ", "({})".format("|".join(tables))),
("What Is The Name Of Your Cpu You Are Adding? ", ".*"),
("How Much Does The Cpu You Are Adding Cost? ", "\d+"),
("How Fast Is The Cpu That You Are Adding? (e.g. 2.00GHz) ", "\d+\.?\d*[GMT]?Hz"),
("How Many Cores Does Your Cpu Have? ", "\d+"),
("How Many Threads Does The Cpu You Are Adding Have? ", "\d+"),
("What Type Of Socket Does Your Cpu Use? ", "(DIP|PLCC|Socket\s?[1-8])")
]
answers = []
for question, regex in questions:
while True:
answer = input(question)
if re.fullmatch(regex, answer):
answers.append(answer)
break
print("Invalid value")
sql_query = ("INSERT INTO Cpus (Name,Cost,Speed_GHz,Cores,Threads,Socket) VALUES (?,?,?,?,?,?,?)")
c.execute(sql_query, answers)