鱼C论坛

 找回密码
 立即注册
查看: 73|回复: 6

[作品展示] 答案判定器2.0

[复制链接]
发表于 5 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
小白自己捣鼓出来的小玩意
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("错了")



小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层
可以自己修改题目和答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

改进版本:

  1. import random

  2. # 题目和正确答案
  3. question = "1 + 1 = ?"
  4. correct_value = 2
  5. wrong_values = [3, 4]  # 错误选项

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

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

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

  16. # 获取并验证答案
  17. user_choice = input("请输入选项(A/B/C): ").upper()
  18. if user_choice == correct_letter:
  19.     print("对了")
  20. else:
  21.     print("错了")
复制代码


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

使用示例:

  1. 1 + 1 = ?
  2. A: 3
  3. B: 4
  4. C: 2
  5. 请输入选项(A/B/C): C
  6. 对了
复制代码


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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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("你敢!")
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 5 天前 | 显示全部楼层
未来的黑客-TK 发表于 2025-07-26 11:58
比如:
import random
a = 喜欢
b = 不喜欢
c =  ...


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

import random

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

# 随机打乱选项顺序
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^

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

  1. question = "你觉得Python有趣吗?"  # 修改问题
  2. correct_answer = "超有趣"         # 修改正确答案
  3. options = [correct_answer, "一般", "没意思"]  # 修改选项
复制代码


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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

列表没学完,不太会
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-31 10:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表