我一直在使用codeacademy学习python,我想制作一个可以帮助我完成作业的程序,我开始使用毕达哥拉斯 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
答案 0 :(得分: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)
Aslo,在你阅读输出之前不必编程关闭,你需要从终端运行python文件。
答案 1 :(得分:0)
您遇到了类型转换问题。转换为float
(或int
,here's稍微了解两者之间的差异,这一切都会好起来的。
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。
答案 2 :(得分: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?"))
答案 3 :(得分:0)
Python 2:
>>> a=input()
123
>>> a #is an int
123
Python 3:
>>> a=input()
123
>>> a #is a string
'123'
答案 4 :(得分:-1)
如果你在python调试器中运行它,你将逐行看到发生了什么,并能够告诉问题是什么行。我知道你是Python的绿色,但学会尽快使用调试器会让你的学习过程变得更快。尝试:
python -m pdb myscript.py