在SublimeREPL中工作时出现无法解决的类型错误

时间:2014-05-14 18:30:08

标签: python python-3.x input

我似乎在使用sublimeREPL在sublime文本2中使用用户输入运行python代码时出现问题。我有一段可以在命令提示符中使用的代码,它不会在REPL中执行。错误似乎是REPL无法处理输入的格式并假设它是一个字符串。我的python是相当有限的,所以有没有办法使REPL与我的代码很好或我需要指定输入?

注意:每次将tempInput转换为int都可行,但是很繁琐。

守则:

# Matthew P
# A program to calculate average grades

def avg(total, elements):
    return total / elements

tempInput = 0
runningTot = 0
numGrades = 0

print("\nEnter Grades (Negative Value to Escape): ")

while tempInput > -1:

    tempInput = input("-->")

    if tempInput > -1:
        runningTot = runningTot + tempInput
        numGrades = numGrades + 1


print("\nQuit Command Givem")
print("Average Grade: " + str(avg(runningTot,numGrades)))
print("Grade Sum: " + str(runningTot))
print("Number of Grades" + str(numGrades))

命令提示符下的输出:

~\Documents\Python Scripts>userinput.py

Enter Grades (Negative Value to Escape):
-->99
-->98
-->97
-->96
-->95
-->-1

Quit Command Givem
Average Grade: 97
Grade Sum: 485
Number of Grades 5

以及在sublimeREPL中运行时的错误(我运行的是使用ctrl + ,, f命令)

Python 3.3.3 (v3.3.3:c3896275c0f6, Nov 18 2013, 21:18:40) [MSC v.1600 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 
Enter Grades (Negative Value to Escape): 
-->100
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 17, in <module>
TypeError: unorderable types: str() > int()
>>> 

1 个答案:

答案 0 :(得分:0)

input()返回一个字符串,但是你将它与一个整数进行比较:

tempInput = input("-->")

if tempInput > -1:

使用int()进行比较:

tempInput = int(input("-->"))

您使用Python 2 在命令行上运行代码,其中input()将输入的字符串评估为Python表达式。 Python 2也不介意比较数字和字符串;数字总是在数字之前排序。

在Sublime中,您在Python 3下运行了代码,但input() 接受字符串输入。