救救我急急急
while True:user_answer = input('国家标准编号为GBT14689:2008,在该号中GBT表示国家标准,14689表示——,2008表示——')
correct_answer = '编号时间'
if user_answer == correct_answer:
print('yes')
break
while True:
user_answer = input('制图国家标准规定,图纸有5种,最大的是——,最小的是——,A3是A4的多少倍,标题栏一般放在图纸的——')
correct_answer = 'A0A42右下角'
if user_answer == correct_answer:
print('yes')
break
while True:
user_answer = input('图样中,机件的可见轮廓线用——画出,不可见轮廉线用——画出,尺寸线和尺寸界限用——画出,对称中心线和轴线用——画出')
correct_answer = '粗实线细虚线细实线细点画线'
if user_answer == correct_answer:
print('yes')
break
while True:
user_answer = input('正投影法中的三个基本特性是真实性、_和_')
correct_answer = '积聚性类似性'
if user_answer == correct_answer:
print('yes yes')
break
while True:
user_answer = input('正投影法中,三视图的“三等”规律是哪三个')
correct_answer = '长对正高平齐宽相等'
if user_answer == correct_answer:
print('yes yes')
break
while True:
user_answer = input('平面图形中的线段可分为———,——,——三种')
correct_answer = '已知线段连接线段中间线段'
if user_answer == correct_answer:
print('yes yes')
break
while True:
user_answer = input('园柱被平面截切后产生的截交线形状主要有圆、矩形和___三种。')
correct_answer = '椭圆'
if user_answer == correct_answer:
print('yes yes')
break
else:
print('错了,答案是椭圆')
else:
print('错了,答案为:已知线段连接线段中间线段')
else:
print('错了,答案是:长对正高平齐宽相等')
else:
print("错了,答案是:积聚性类似性")
else:
print('错了,答案为:粗实线细虚线细实线细点画线')
print('good')
else:
print('错了答案是A0A42右下角')
else:
print('错了正确答案为 编号时间')
print('good')
为什么前6个问题错误之后没法循环,他直接跳过进入下一个问题了 在您的代码中,每个`while True`循环嵌套得较深,导致如果外层循环继续执行,内层循环不会再重头开始。同时使用`else`块和正确答案判断方式,以及多个相同的`break`和`else`语句,可能引发混乱。在这种结构下,错误的嵌套会导致出现意料之外的行为。
以下是一个经过简化和修正的版本,仅示例一个独立问题的回答逻辑:
while True:
user_answer = input('国家标准编号为GBT14689:2008,在该号中GBT表示国家标准,14689表示――,2008表示――')
correct_answer = '编号时间'
if user_answer == correct_answer:
print('yes')
break
else:
print('错了正确答案为 编号时间')
对于后续每一个问题,您都可以采用类似的结构:
1. 使用一个`while True`循环。
2. 提示用户输入答案。
3. 如果答案正确则输出正确并`break`。
4. 如果答案错误则提示正确答案。
这样每一个问题都是独立的,不会因为前一个问题跳过而进入下一个问题。您需要把每个问题的逻辑结构成一个单独的循环。这种方式可以避免深层的嵌套,同时保证每个问题回答正确后再进入下一个问题。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 您的代码中存在几个问题,主要是关于嵌套循环的退出机制和逻辑控制。在您的代码中,每个问题都是一个嵌套的 while True 循环,而每个内层循环只在用户给出正确答案时才会通过 break 语句退出。但是,如果用户在某个问题中给出了错误的答案,程序会直接跳到下一个问题的提示,而不是重新提示当前问题。
这是因为每个内层循环(除了最内层的那个)都没有处理错误答案的逻辑,它们只是简单地继续执行到下一个 while True 循环。此外,您的代码结构也使得一旦进入内层循环,除非给出正确答案,否则无法返回到外层循环重新提示。
为了修复这个问题,您需要在每个问题的循环中添加处理错误答案的逻辑,通常是重新提示用户输入,直到他们给出正确答案。这可以通过在 else 子句中添加一个 continue 语句(对于最内层的循环来说不适用,因为 continue 会跳过当前循环的剩余部分并立即开始下一次迭代,而最内层循环在错误答案后应该重新提示)或者使用 input 和条件检查在一个循环中反复进行,直到正确为止。
下面是一个简化和修改后的代码示例,它展示了如何在每个问题中处理错误答案,并允许用户重新尝试直到给出正确答案:
python
复制代码
def ask_question(question, correct_answer):
while True:
user_answer = input(question)
if user_answer == correct_answer:
print('yes')
return True# 成功回答正确,退出函数
else:
print('错了,正确答案是:', correct_answer)
return False# 实际上这个返回永远不会发生,因为上面的while是True
# 开始提问
if ask_question('国家标准编号为GBT14689:2008,在该号中GBT表示国家标准,14689表示——,2008表示——', '编号时间'):
if ask_question('制图国家标准规定,图纸有5种,最大的是——,最小的是——,A3是A4的多少倍,标题栏一般放在图纸的——', 'A0 A4 2 右下角'):
if ask_question('图样中,机件的可见轮廓线用——画出,不可见轮廉线用——画出,尺寸线和尺寸界限用——画出,对称中心线和轴线用——画出', '粗实线 细虚线 细实线 细点画线'):
if ask_question('正投影法中的三个基本特性是真实性、_和_', '积聚性 类似性'):
if ask_question('正投影法中,三视图的“三等”规律是哪三个', '长对正 高平齐 宽相等'):
if ask_question('平面图形中的线段可分为———,——,——三种', '已知线段 连接线段 中间线段'):
if ask_question('园柱被平面截切后产生的截交线形状主要有圆、矩形和___三种。', '椭圆'):
print('yes yes')
break# 这里其实不需要break,因为最外层的循环已经结束
print('good')
注意,这个代码示例中,我使用了函数 ask_question 来封装提问和检查答案的逻辑,使得代码更加清晰和易于管理。同时,我移除了不必要的嵌套循环和 else 子句中的 while True,因为每个问题都已经在自己的循环中处理了。 你的代码中存在一些逻辑问题,特别是在嵌套的 while 循环中。问题主要是由于 while True 的嵌套结构和 else 的位置。
以下是你的代码中主要问题的解释和解决方法:
1. 嵌套 while True 的逻辑问题
当用户输入的答案错误时,你在 else 分支中打印提示,但并没有控制程序重新回到当前问题的循环,而是直接跳出了当前的 while 循环,进入了外层的下一个问题。
这是因为:
[*]在嵌套的 while True 中,内层的 break 只会退出当前最近的 while 循环,而不会回到外层的循环逻辑。
[*]你的 else 语句只执行一次,然后代码直接继续运行到下一个问题。
2. while True 的滥用
你不需要为每个问题都创建一个 while True 循环,逻辑会变得非常复杂和难以维护。
修复思路
为了让每个问题在用户答错时能够重复询问,同时避免多个嵌套的 while True 导致的混乱,可以采取以下方法:
[*]把所有的问题和答案存储在一个列表或字典中。
[*]使用一个统一的循环来遍历所有问题。
[*]对用户答错的情况,继续当前问题的循环,直到答对。
改进代码如下:
questions = [
{
"question": "国家标准编号为GBT14689:2008,在该号中GBT表示国家标准,14689表示——,2008表示——",
"answer": "编号时间"
},
{
"question": "制图国家标准规定,图纸有5种,最大的是——,最小的是——,A3是A4的多少倍,标题栏一般放在图纸的——",
"answer": "A0A42右下角"
},
{
"question": "图样中,机件的可见轮廓线用——画出,不可见轮廓线用——画出,尺寸线和尺寸界限用——画出,对称中心线和轴线用——画出",
"answer": "粗实线细虚线细实线细点画线"
},
{
"question": "正投影法中的三个基本特性是真实性、_和_",
"answer": "积聚性类似性"
},
{
"question": "正投影法中,三视图的“三等”规律是哪三个",
"answer": "长对正高平齐宽相等"
},
{
"question": "平面图形中的线段可分为———,——,——三种",
"answer": "已知线段连接线段中间线段"
},
{
"question": "园柱被平面截切后产生的截交线形状主要有圆、矩形和___三种。",
"answer": "椭圆"
}
]
# 遍历每个问题
for item in questions:
while True:
user_answer = input(item["question"] + "\n")
if user_answer == item["answer"]:
print("yes")
break# 跳到下一个问题
else:
print(f"错了,正确答案是:{item['answer']}")
本帖最后由 jackz007 于 2025-1-12 17:27 编辑
user_answer = input('国家标准编号为GBT14689:2008,在该号中GBT表示国家标准,14689表示——,2008表示——')
correct_answer = '编号时间'
if user_answer == correct_answer:
print('yes')
else:
print('错了正确答案为' , correct_answer)
user_answer = input('制图国家标准规定,图纸有5种,最大的是——,最小的是——,A3是A4的多少倍,标题栏一般放在图纸的——')
correct_answer = 'A0A42右下角'
if user_answer == correct_answer:
print('yes')
else:
print('错了正确答案为' , correct_answer)
user_answer = input('图样中,机件的可见轮廓线用——画出,不可见轮廉线用——画出,尺寸线和尺寸界限用——画出,对称中心线和轴线用——画出')
correct_answer = '粗实线细虚线细实线细点画线'
if user_answer == correct_answer:
print('yes')
else:
print('错了正确答案为' , correct_answer)
user_answer = input('正投影法中的三个基本特性是真实性、_和_')
correct_answer = '积聚性类似性'
if user_answer == correct_answer:
print('yes')
else:
print('错了正确答案为' , correct_answer)
user_answer = input('正投影法中,三视图的“三等”规律是哪三个')
correct_answer = '长对正高平齐宽相等'
if user_answer == correct_answer:
print('yes')
else:
print('错了正确答案为' , correct_answer)
user_answer = input('平面图形中的线段可分为———,——,——三种')
correct_answer = '已知线段连接线段中间线段'
if user_answer == correct_answer:
print('yes')
else:
print('错了正确答案为' , correct_answer)
user_answer = input('园柱被平面截切后产生的截交线形状主要有圆、矩形和___三种。')
correct_answer = '椭圆'
if user_answer == correct_answer:
print('yes')
else:
print('错了正确答案为' , correct_answer)
print('good')
【简化版】:
e = (('国家标准编号为GBT14689:2008,在该号中GBT表示国家标准,14689表示——,2008表示——' , '编号时间') ,
('制图国家标准规定,图纸有5种,最大的是——,最小的是——,A3是A4的多少倍,标题栏一般放在图纸的——' , 'A0A42右下角') ,
('图样中,机件的可见轮廓线用——画出,不可见轮廉线用——画出,尺寸线和尺寸界限用——画出,对称中心线和轴线用——画出' , '粗实线细虚线细实线细点画线') ,
('正投影法中的三个基本特性是真实性、_和_' , '积聚性类似性') ,
('正投影法中,三视图的“三等”规律是哪三个' , '长对正高平齐宽相等') ,
('平面图形中的线段可分为———,——,——三种' , '已知线段连接线段中间线段') ,
('园柱被平面截切后产生的截交线形状主要有圆、矩形和___三种。' , '椭圆'))
for d in e:
print('yes\n') if input(d) == d else print('错了正确答案为' , d + '\n')
print('good')
页:
[1]