【问题标题】:Can't convert int object to str implicitly error [duplicate]无法将 int 对象转换为 str 隐式错误 [重复]
【发布时间】:2014-02-26 05:14:32
【问题描述】:

这是我的代码的简化快照:

def getExamPoints(examPoints):
    totalexamPoints = 0 
    return totalexamPoints

def getHomeworkPoints(hwPoints):
    totalhwPoints = 0
    return totalhwPoints

def getProjectPoints(projectPoints):
    totalprojectPoints = 0
    return avgtotalprojectPoints

def computeGrade(computeGrade):
    computeGrade = 1
    return computeGrade

def main ( ):

    gradeReport = "\n\nStudent\t Score\tGrade\n=====================\n"

    studentName = input ("Enter the next student's name, or 'quit' when done: ")

    while studentName != "quit":

        examPoints = getExamPoints(studentName)
        hwPoints = getHomeworkPoints(studentName)
        projectPoints = getProjectPoints(studentName)

        studentScore = examPoints + hwPoints + projectPoints

        studentGrade = computeGrade (studentScore)

        gradeReport = gradeReport + "\n" + studentName + "\t%6.1f"%studentScore + "\t" + studentGrade** 

main ( ) # Start program

在最后一行的gradeReport 赋值上出现错误,上面写着“无法将 int 对象隐式转换为 str”。为什么会这样?

【问题讨论】:

  • 不要使用+创建字符串,使用format string syntax
  • 问题不清楚。究竟是什么问题?
  • 请只放与问题相关的程序部分;而不是一切。
  • @BurhanKhalid Mate,不要在这里开始编辑大战。如果不了解存在的变量类型,这个问题就不清楚了。如果你想做一份合适的工作,那就删除那些真正不相关的信息。 SO 充满了问题,人们在没有上下文的情况下从他们的代码中放入一行,这很糟糕,还有大量的代码转储。
  • 我并不是要开始编辑大战,但从那行很清楚,异常提出了问题所在;其他代码行没有解决问题。

标签: python


【解决方案1】:

这是有问题的行:

gradeReport = gradeReport + "\n" + studentName + "\t%6.1f"%studentScore+"\t"+studentGrad

您应该使用字符串格式,而不是简单地将字符串和整数相加(这是错误的)。一种方法是:

gradeReport = '%s\n%s\t%6.1f\t%s' % (gradeReport, studentName, studentScore, studentGrade

还有其他方法,但由于您已经在使用% 格式,我在此继续说明


在 Python 中,"5" + 5 是一个错误,因为它不明确。它应该返回"55"吗? 10? Python 要求您明确说明,而不是做出假设并在一半的时间里犯错。

【讨论】:

  • 效果很好,谢谢!
猜你喜欢
  • 2017-03-27
  • 2013-09-27
  • 2015-03-23
  • 2017-12-21
  • 1970-01-01
  • 2012-11-19
  • 2017-08-24
  • 1970-01-01
相关资源
最近更新 更多