Python 我如何区分str和int,这就是ValueError:invalid literal for int()以10:error为基数的意思吗?

Python 我如何区分str和int,这就是ValueError:invalid literal for int()以10:error为基数的意思吗?,python,python-3.x,Python,Python 3.x,因此,当这段代码实际运行时,它会输出一个我不理解的错误: ValueError:以10为基数的int()的文本无效:#(myName分数) 如何修复此问题?简单来说,此错误意味着什么?您可能正在尝试将无法转换为int的内容转换为int choice = input (" ") choice = int(choice) if choice == 2: print ("What class are you in? Please choose (class) 1,

因此,当这段代码实际运行时,它会输出一个我不理解的错误:

ValueError:以10为基数的int()的文本无效:#(myName分数)


如何修复此问题?简单来说,此错误意味着什么?

您可能正在尝试将无法转换为int的内容转换为int

   choice = input (" ")
   choice = int(choice)
    if choice == 2:
        print ("What class are you in? Please choose (class) 1, 2 or 3.")
        Class = int(input ())

        #class 1 file
        if Class == 1:
            c1 = open('class1.csv', 'a+')
            ScoreCount = str(ScoreCount)
            c1.write(myName + "-"  + ScoreCount)
            c1.write("\n")
            c1.close()

            read_c1 = open('class1.csv', 'r')
            print (read_c1)


    if choice == 3:
        row[1]=int(row[1]) #converts the values into int.
        row[2]=int(row[2])
        row[3]=int(row[3])
        row[4]=int(row[4])

    if choice == 4:
        WMCI= 1
        print ("Thank You. Bye!")
这将给出你得到的10个基本错误,你有2个bug。 第一种方法是,当您将分数存储到csv中时,您将ScoreCount转换为字符串,并以这种方式保存。您需要让转换为仅针对作业的临时转换:

int("h") 
这将在类1中修复,您需要执行2和3。你的第二个错误是,当你从文件中读取分数时,如果一个叫Name的人得了5分,你就把它们存储为:“Name-5”。这意味着您不能将它们作为一个整体转换为一个数字。你需要把数字部分分开。在min-max中,您可以:

    #class 1 file
    if Class == 1:
        c1 = open('class1.csv', 'a+')
        c1.write(myName + "-"  + str(ScoreCount))
        c1.write("\n")
        c1.close()

        read_c1 = open('class1.csv', 'r')
        print (read_c1)
它需要成为:

row[0] = int (row[0])
但是从那里我无法理解您的逻辑,或者您在代码的这一部分中试图实现什么。它将消除当前的错误,但这部分代码需要更多的工作

通过构建代码来解释上述代码行的右侧:

row[0] = int(row[0].split("-")[1])

split(“-”)是您可能没有遇到的部分,它将字符串拆分为一个列表,在我们的示例中,它在“-”处进行拆分,但如果括号为空,则在空格处进行拆分:split()或括号中的任何其他字符。

您能否指出代码的哪一部分实际导致了错误?您在输入中输入了什么?请提供一个示例。这包括消除我们不关心的任何噪音(输入、打印、与错误无关的内容)以及重现错误所需的核心和值。并显示完整的回溯。“对于csv_c1:newlist.append(行[0:5])行[0]=int(行[0])行[1]=int(行[1])行[2]=int(行[2])中的行,您指的是您不关心的噪声。其他人设法帮助发现其他错误并需要修改的内容-见下文。'csv_c1:newlist.append(row[0:5])row[0]=int(row[0])row[1]=int(row[1])row[2]=int(row[2])hi paul您能解释一下行位plz的编码吗(你做过的那件事——也请解释一下我做错了什么,让这成为我的一次学习经历).p.s.你教普通中等教育证书还是更高级别?我将编辑上面的代码,以显示右侧的每个部分返回的内容。目前我只教普通中等教育证书,但我可以教A级以上的课程。请看,从这些行计算最小值、最大值和平均值。我知道如何做。但是,如果我运行您提供的代码,问题仍然存在它说IndexError:列表索引超出范围。注意:我正在使用上述代码从多行读取,但只是更改了第1[]和第2[]中的编号,而不是3[]。这是为了确保第1和第2[]包含相同的编号,因为它们是引用该行的编号(我假定)例如,第[1]=(第[2]行。拆分(“-”[3])为什么会一直出现?我已经按照您的建议对文件进行了更改。我不确定我是否遵循,但对于多行:第[1]=int(第[1]行。拆分(“-”[1])行[2]=int(第[2]行)。拆分(“-”[1]))
row[0]  # For our example, this will return 'Guido-9'
row[0].split("-")  # Splits the string to return ['Guido','9']
row[0].split("-")[1]  # Takes the second item and returns '9'
int(row[0].split("-")[1])  # Turns it into a number and returns 9