我的目标是什么: 我目前正在尝试构建一个简单的故障排除程序。变量current_question意味着更新为嵌套if语句中每个输入/问题的值。这样代码就可以识别出当前正在询问的问题。因此,我可以循环回到当前问题,以防用户输入错误数据(不是,不是否)
问题 但是,当我测试代码并继续第二个问题时,这个变量不会更新到问题2,3,4但是当我输入错误的数据时,循环只能用第一个问题。我一直试图解决这个问题很长一段时间但仍然没有达成解决方案,所以我认为这将是一个很好的起点。
代码!
SqlCommand command =new SqlCommand("select * from memberform ", con);
con.Open();
SqlDataReader read = command.ExecuteReader();
while (read.Read())
{
richTextBox1.Text = (read["mobile"].ToString());
}
read.Close();
答案 0 :(得分:0)
如果您的意图是针对每个可能的问题进行循环if-elif
。您必须为每种可能的方案使用单独的if
,并且必须删除break
语句。
if q1 == 'yes' or q1 == 'Yes':
print('dry it out')
if q1 == 'no' or q1 == 'No':
q2 = str(input('is your phone cracked? ')).lower()
current_question = q2
i = i + 1
if q2 == 'yes' or q2 == 'Yes':
print('replace screen')
if q2 == 'no' or q2 == 'No':
q3 = str(input('are you able to download apps/videos? ')).lower()
current_question = q3
i = i + 1
etc..
答案 1 :(得分:0)
当问题循环结束时,你的第二次到达 - 由于任何原因造成。在用户键入错误数据后,再次询问问题并结束程序,因为您不会告诉python恢复主循环。
摆脱当前循环ans而不是ifs在那里使用你的循环:
q1 = str(input('Is your phone wet? ')).lower()
while q1 != "yes" and q1 != "Yes" and q1 != "no" and q1 != "No":
q1 = str(input('Is your phone wet? ')).lower()
if q1 == 'yes' or q1 == 'Yes':
print('dry it out')
elif q1 == 'no' or q1 == 'No':
q2 = str(input('is your phone cracked? ')).lower()
while q2 != "yes" and q2 != "Yes" and q2 != "no" and q2 != "No":
[...]
等等