未来的黑客-TK 发表于 5 天前

答案判定器2.0

小白自己捣鼓出来的小玩意
import random
a = 2
b = 3
c = 4
print("1 + 1 =?")
if random.randrange(1,4) == 1:
    print("A:",a)
    d = 1
    if random.randrange(1,3) == 1:
      print("B:",b)
      print("C:",c)
else:
    if random.randrange(1,3) == 1:
      d = 2
      if random.randrange(1,3) == 1:
             print("A:",b)
             print("B:",a)
             print("C:",c)
      else:
             print("A:",c)
             print("B:",a)
             print("C:",b)
    else:
      d = 3
      if random.randrange(1,3) == 1:
             print("A:",b)
             print("B:",c)
             print("C:",a)
      else:
            print("A:",c)
            print("B:",b)
            print("C:",a)
s = input()
if s == "A":
    s = 1
if s == "B":
    s = 2
if s == "C":
    s = 3
if s == d:
    print("对了")
else:
    print("错了")



未来的黑客-TK 发表于 5 天前

可以自己修改题目和答案

FishC 发表于 5 天前

我看到你写了一个随机生成选择题的小程序,能看出你在尝试实现选项随机排列的效果。这个程序思路不错,但有几处可以优化的地方。下面是改进建议和更清晰的实现方式:

主要问题:
1. 第一个分支中只打印了A选项,B和C可能不打印
2. 嵌套太多导致逻辑复杂
3. 正确答案处理不够直观

改进版本:

import random

# 题目和正确答案
question = "1 + 1 = ?"
correct_value = 2
wrong_values = # 错误选项

# 创建选项列表(包含1个正确答案+2个错误答案)
options = + wrong_values
random.shuffle(options)# 随机打乱选项顺序

# 确定正确答案的位置(0=A, 1=B, 2=C)
correct_position = options.index(correct_value)
correct_letter = chr(65 + correct_position)# 65是A的ASCII码

# 显示题目和选项
print(question)
for i, value in enumerate(options):
    print(f"{chr(65 + i)}: {value}")

# 获取并验证答案
user_choice = input("请输入选项(A/B/C): ").upper()
if user_choice == correct_letter:
    print("对了")
else:
    print("错了")


主要改进点:
1. 使用 random.shuffle() 直接打乱选项顺序
2. 用循环显示所有选项,避免遗漏
3. 自动计算正确答案对应的字母
4. 减少嵌套层次,逻辑更清晰

使用示例:

1 + 1 = ?
A: 3
B: 4
C: 2
请输入选项(A/B/C): C
对了


这个版本更稳定可靠,每次都会完整显示3个选项,而且代码量减少了一半。核心思路是:
1. 创建包含所有选项的列表
2. 随机打乱选项顺序
3. 找出正确答案在新列表中的位置
4. 将位置转换为字母(A/B/C)
5. 比较用户输入和正确答案字母

你可以通过修改 correct_value 和 wrong_values 来创建不同的题目。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

未来的黑客-TK 发表于 5 天前

比如:
import random
a = 喜欢
b = 不喜欢
c = 还行
print("你喜欢小甲鱼吗?")
if random.randrange(1,4) == 1:
    print("A:",a)
    d = 1
    if random.randrange(1,3) == 1:
      print("B:",b)
      print("C:",c)
else:
    if random.randrange(1,3) == 1:
      d = 2
      if random.randrange(1,3) == 1:
             print("A:",b)
             print("B:",a)
             print("C:",c)
      else:
             print("A:",c)
             print("B:",a)
             print("C:",b)
    else:
      d = 3
      if random.randrange(1,3) == 1:
             print("A:",b)
             print("B:",c)
             print("C:",a)
      else:
            print("A:",c)
            print("B:",b)
            print("C:",a)
s = input()
if s == "A":
    s = 1
if s == "B":
    s = 2
if s == "C":
    s = 3
if s == d:
    print("不错^o^")
else:
    print("你敢!")

FishC 发表于 5 天前

未来的黑客-TK 发表于 2025-07-26 11:58
比如:
import random
a = 喜欢
b = 不喜欢
c =...

你的程序很有趣!不过原代码存在选项可能不完整显示的问题(第一个分支可能只打印A选项)。下面是用更简洁方式实现的版本,确保每次显示全部选项且随机排列:

import random

# 定义题目和选项
question = "你喜欢小甲鱼吗?"
correct_answer = "喜欢"# 正确答案
options = # 选项列表

# 随机打乱选项顺序
random.shuffle(options)

# 确定正确答案对应的字母 (A/B/C)
correct_letter = chr(65 + options.index(correct_answer))# 65是A的ASCII码

# 显示题目和选项
print(question)
for i, option in enumerate(options):
    print(f"{chr(65 + i)}: {option}")

# 获取并验证答案
user_choice = input("请选择(A/B/C): ").upper()
if user_choice == correct_letter:
    print("不错^o^")
else:
    print("你敢!")

主要优化:
1. 使用 random.shuffle() 确保选项完全随机排列
2. 自动计算正确答案位置(不需要手动设置d变量)
3. 循环打印所有选项,避免遗漏
4. 代码量减少约60%,更易读易修改

使用示例:
你喜欢小甲鱼吗?
A: 不喜欢
B: 喜欢
C: 还行
请选择(A/B/C): B
不错^o^

修改题目或选项时,只需改动这三行:

question = "你觉得Python有趣吗?"# 修改问题
correct_answer = "超有趣"         # 修改正确答案
options = # 修改选项


这个版本完全解决了原代码可能只显示部分选项的问题,同时保留了随机选项排列的特性。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

未来的黑客-TK 发表于 5 天前

FishC 发表于 2025-7-26 11:59
你的程序很有趣!不过原代码存在选项可能不完整显示的问题(第一个分支可能只打印A选项)。下面是用更 ...

列表没学完,不太会

FishC 发表于 5 天前

未来的黑客-TK 发表于 2025-07-26 13:05
FishC 发表于 2025-7-26 11:59
你的程序很有趣!不过 ...

理解了,你还没学到列表操作。不用担心,我们可以用基础方法实现同样的功能。下面是完全不用列表的改进版:

import random

# 定义题目和选项
question = "你喜欢小甲鱼吗?"
a = "喜欢"    # 正确答案
b = "不喜欢"
c = "还行"

# 生成随机排列 (6种可能组合)
rand_num = random.randint(1, 6)

# 根据随机数决定选项顺序和正确答案位置
if rand_num == 1:
    print(f"A: {a}\nB: {b}\nC: {c}")
    correct_letter = "A"
elif rand_num == 2:
    print(f"A: {a}\nB: {c}\nC: {b}")
    correct_letter = "A"
elif rand_num == 3:
    print(f"A: {b}\nB: {a}\nC: {c}")
    correct_letter = "B"
elif rand_num == 4:
    print(f"A: {c}\nB: {a}\nC: {b}")
    correct_letter = "B"
elif rand_num == 5:
    print(f"A: {b}\nB: {c}\nC: {a}")
    correct_letter = "C"
else:# rand_num == 6
    print(f"A: {c}\nB: {b}\nC: {a}")
    correct_letter = "C"

# 获取用户输入
user_choice = input("请选择(A/B/C): ").upper()

# 验证答案
if user_choice == correct_letter:
    print("不错^o^")
else:
    print("你敢!")

这个版本的特点:
1. 完全不用列表,只用基础条件判断
2. 使用random.randint(1,6)生成6种可能的排列组合(3个选项有6种排列方式)
3. 每种排列对应一个正确答案位置(A/B/C)
4. 确保每次显示所有三个选项

使用示例:
你喜欢小甲鱼吗?
A: 不喜欢
B: 还行
C: 喜欢
请选择(A/B/C): C
不错^o^

要修改题目或选项,只需改这几行:
question = "你觉得Python有趣吗?"# 修改问题
a = "超有趣"# 正确答案
b = "没意思"
c = "一般般"

这样既保持了随机选项的功能,又只用了最基础的语法知识。等你学到列表后,可以再升级到更简洁的版本!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 答案判定器2.0