【问题标题】:Invalid literal for int() base 10 - Program won't accept input [closed]int() base 10 的无效文字 - 程序不接受输入 [关闭]
【发布时间】:2014-07-25 12:12:28
【问题描述】:

当我尝试使用它时,我的代码开始出现错误。我需要它来接受输入,将用户的数字分开,确定平均值,然后打印平均值。这一切以前都有效,但有些东西发生了变化,现在它不再接受输入,并在标题中给了我错误消息。这是我的代码:

class1 = 0
class2 = 0
class3 = 0
class4 = 0
class5 = 0

def findAverage():
    allClasses = class1 + class2 + class3 + class4 + class5
    finalAverage = allClasses / 5
    return finalAverage


grades = int(input("Enter the grades from your five classes, seperated by a space."))

grades_list = grades.split(' ')

class1, class2, class3, class4, class5 = grades_list

findAverage()

if findAverage() >= 80:
print("Congratulations, you are on the honor roll. Your average is", findAverage)

【问题讨论】:

  • 例如'1 2 3 4 5' 确实是一个无效的整数。你的期望是什么?

标签: python list variables int


【解决方案1】:

在这一行

grades = int(input("Enter the grades from your five classes, seperated by a space."))

您正在向int 函数传递一个字符串,我猜它通常包含一系列整数用空格分隔。那不是int 能够解析成整数的字符串。你可能想要这个:

grades = raw_input("Enter the grades from your five classes, seperated by a space.")

grades_list = [int(grade) for grade in grades.split(' ')]

class1, class2, class3, class4, class5 = grades_list

您必须将int 函数单独应用于仅包含整数的子字符串。

【讨论】:

  • 在 python2.7 中,input() 不适用于包含空格的输入字符串(完全披露我目前正在使用 python3,所以可能在那里有所不同)。在这种情况下,您应该使用 Grades=raw_input("blah") 之类的东西,而不是 Grades=input("blah")。
  • 在 Python 2.x 中几乎所有情况下都应该使用raw_input;从 Python 3 中删除它是有原因的(除了允许将 raw_input 重命名为 input)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-14
  • 1970-01-01
  • 1970-01-01
  • 2017-10-07
  • 2013-03-11
相关资源
最近更新 更多