1

我收到一个错误,告诉我不能将两个具有特定值的变量相乘。

TypeError: can't multiply sequence by non-int of type 'str'

我正在尝试在 python 中为学校制定勾股定理。我需要将它放在浮点数中才能获得十进制数。

我已经尝试了几种不同的方法,

  • 我把它放在几个值中,int、string、float 等。
  • 我只是尝试了很多不同的东西,这是迄今为止我得到的最好的。
    l_1 = float(input())
    l_1 = float(l_1)
    l_1 = str(l_1)
    print ("The long side is: " + l_1)
    l_2 = float(input())
    l_2 = float(l_2)
    l_2 = str(l_2)
    print ("The short side is: " + l_2)
    l_2 = int(l_2)
    l_1 = int(l_1)
       
    l_1 = int(l_1)
    l_2 = int(l_2)
        
    wor1 = math.sqrt(l_1 * l_1 - l_2 * l_2)
    print (wor1)

我希望输出实际是没有任何错误代码的答案,我只需要它用给定的变量来计算。

4

2 回答 2

2

对代码进行一些更改,您就可以开始了。

请注意,在计算平方根时,请注意在 sqrt 函数中传递平方的绝对差。使用它,您可以消除小边和大边的约定。只需采取两个方面,代码将为您处理这个问题。

import math

l_1 = float(input())
print ("The long side is: " + str(l_1))
l_2 = float(input())
print ("The short side is: " + str(l_2))

difference = float(l_1 * l_1 - l_2 * l_2)
# Take absolute difference since square roots of negative numbers are undefined
absolute_difference = math.fabs(difference)

# Get square root of the absolute difference 
wor1 = math.sqrt(absolute_difference)
print (wor1)
于 2019-10-04T11:36:20.613 回答
1

只需自己打印浮点值,无需首先将它们转换为字符串

l_1 = float(input())
print ("The long side is: ", l_1)
l_2 = float(input())
print ("The short side is: ", l_2)

wor1 = math.sqrt(l_1 * l_1 - l_2 * l_2)
print (wor1)
于 2019-10-04T11:29:57.567 回答