0

我一直在 codeacademy 上学习 python,我想制作一个可以帮助我完成作业的程序,我从 pythagoras a 2 +b 2 =c 2开始,它在 codeacademy 上运行良好,但是当我在真正的 python 上尝试时程序它不起作用,它在我读懂错误之前关闭。

a = input ("what is a")
b = input ("what is b")

a = a*a
b = b*b
c =  a+b

from math import sqrt
c = sqrt (c)

print (c)

我知道它很基础,但我还在学习我也不确定python代码学院的版本是什么,但我很确定我使用的python程序是3

4

5 回答 5

3

我相信您在这里遇到了类型转换问题。因此,您需要将其转换为整数:

from math import sqrt
a = int(raw_input("what is a: "))
b = int(raw_input("what is b: "))

a = a*a
b = b*b
c = a+b

c = sqrt (c)
print (c)

此外,在读取输出之前不必关闭程序,您需要从终端运行 pythonfile。

于 2013-03-01T17:51:30.893 回答
0

蟒蛇2:

>>> a=input()
123
>>> a #is an int
123

蟒蛇 3:

>>> a=input()
123
>>> a #is a string
'123'
于 2013-03-01T17:54:38.170 回答
0

您遇到了类型转换问题。投射到 a float(或 a int这里有一点关于两者之间的区别),一切都会好起来的。

a = float(input ("what is a"))
b = float(input ("what is b"))

您还应该考虑使用 Python 解释器。这是我尝试手动单步执行代码时得到的结果:

>>> a = input('what is a')
what is a3
>>> a*a # I put 3 in as my number, but it gave me the str value of '3'!
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't multiply sequence by non-int of type 'str'

我还建议try...except帮助您提供更好的错误消息。如果你使用while它,它也会成功,这样你就可以确保你有一些东西可以使用,例如:

# Make them keep inputting "a" until they give you something 
# you can actually work with!
while 1:
    try:
        a = float(input ("what is a"))
        break
    except TypeError:
        print('That was not a number! please try again')

注意:这在 Python 2.x 中不会发生,因为输入可以返回一个 int。

于 2013-03-01T17:51:53.423 回答
0

input返回一个字符串(类型str)。为了使乘法起作用,您必须int从它们创建一个整数(类型),如下所示:

a = int(input("what is a?"))
b = int(input("what is b?"))

或者,如果您希望用户能够输入小数,请使用float

a = float(input("what is a?"))
b = float(input("what is b?"))
于 2013-03-01T17:52:13.460 回答
-1

如果您在 python 调试器中运行它,您将逐行查看正在发生的事情,并能够判断哪一行是问题所在。我知道你是 Python 新手,但尽快学习使用调试器会让你的学习过程变得更快。尝试:

python -m pdb myscript.py
于 2013-03-01T17:53:08.927 回答