AttributeError:“tuple”对象没有属性“split”(使用选择库的选项列表)

AttributeError: 'tuple' object has no attribute 'split' (options list using pick library)

提问人:zCooki 提问时间:11/8/2023 最后编辑:zCooki 更新时间:11/9/2023 访问量:59

问:

-PYTHON初学者

(使用pick库,Python 3.11并尝试制作测验游戏/应用程序?

我正在尝试从看起来像这样的文件中获取答案列表,但可以针对不同的问题和可能的答案数量进行更改:

3
Question 1
2
Answer 1 (1)
Answer 2 (1)
Answer 2 (1)
Question 2
4
Answer 1 (2)
Answer 2 (2)
Answer 3 (2)
Answer 4 (2)
Answer 3 (2)
Question 3
2
Answer 1 (3)
Answer 2 (3)
Answer 2 (3)

文件的第一行是文件中的问题总数。 文件的第二行是第一个问题的标题。 文件的第三行是文件中可能答案总数。 接下来的几行是问题的可能答案。 然后是问题的正确答案。

错误:

我收到的错误消息是:

'tuple' object has no attribute 'split'
  File "C:\Users\username\Desktop\Applications\Quizzable\Quizzable.py", line 166, in <module>
    option, index = pick(options, title, indicator='[>]', default_index=0)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'tuple' object has no attribute 'split'

我知道“选项”列表变量有问题,但我不知道如何解决它。 该变量按预期正确列出。但是选择库没有正确处理它。['Answer 1 (1)', 'Answer 2 (1)']

在其他场合,例如

quizzes = os.listdir()
title = '-----------\n QUIZZABLE \n-----------\n   Quiz    \n-----------'
options = [quizzes, 'Return']
option, index = pick(options, title, indicator='[>]', default_index=0)

它被解释为它应该有的方式,所以:我做错了什么?

with open(str(option)[2:-2], 'r') as quiz:
    quiz_info = [line.strip() for line in quiz]
    quiz_title = str(option)
    title = '-----------\n QUIZZABLE \n-----------\n   Quiz    \n-----------\n\nQuiz:', quiz_title
    quiz_question_total = quiz_info[0]
    quiz_score = 0
    quiz_question_count = int(1)
    quiz_current_line = int(1)
    while quiz_question_count <= int(quiz_question_total):
        quiz_question = quiz_info[int(quiz_current_line)]
        quiz_current_line = int(quiz_current_line) + int(1)
        quiz_question_option_count = quiz_info[int(quiz_current_line)]
        quiz_current_line = int(quiz_current_line) + int(1)
        quiz_question_option = int(1)
        options = []
        while quiz_question_option <= int(quiz_question_option_count):
            options += [quiz_info[int(quiz_current_line)]]
            quiz_current_line = int(quiz_current_line) + int(1)
            quiz_question_option = int(quiz_question_option) + int(1)
        quiz_question_answer = quiz_info[int(quiz_current_line)]
        quiz_current_line = int(quiz_current_line) + int(1)
        option, index = pick(options, title, indicator='[>]', default_index=0)    #problem
        if option == quiz_question_answer:
            quiz_score = quiz_score + int(1)

我希望得到一个选项列表,该选项与已经提到的当前问题的 from 文件选项相匹配。

python-3.x 列表

评论

1赞 001 11/8/2023
旁注:如果某物已经是 int,则无需调用它。如果可能的话,该函数可用于将非 int 的东西转换为 int。示例:、 等int()int("22")int(1.2)
0赞 zCooki 11/8/2023
@001我知道,只是选择安全,以防万一我做了一个哎呀,意外犯了更多错误。不过,我只在那块代码中这样做了:)
1赞 001 11/8/2023
看起来 pick lib 需要一个字符串作为参数 #2,但您正在传递一个元组。可用于连接字符串。逗号创建元组。+
0赞 001 11/8/2023
对于所有调用,它使代码混乱,使其更难阅读。代码的阅读频率是否高于编写的频率?仅供参考。int()
1赞 John Gordon 11/8/2023
你有这一行逗号使它成为一个元组。我想你的意思是用 .title = '-----------\n QUIZZABLE \n-----------\n Quiz \n-----------\n\nQuiz:', quiz_title+,

答:

1赞 zCooki 11/9/2023 #1

正如约翰·戈登(John Gordon)所评论的那样:实际上是标题导致了问题,谢谢。

你有这一行 逗号使它成为 元。我想你的意思是用 .title = '-----------\n QUIZZABLE \n-----------\n Quiz \n-----------\n\nQuiz:', quiz_title+,