在Python中得到这个错误TypeError:不支持的操作数类型为:'str'和'int'
我试图编写一个软件,可以计算统计方差,我在python中使用列表,问题是python将输入数据识别为字符串而不是整数(因为它们是数字,我必须用'em'来计算) 这导致我出现以下错误:在Python中得到这个错误TypeError:不支持的操作数类型为:'str'和'int'
TypeError:不支持的操作数类型/:'str'和'int'
下面是代码,所以你可以给它看一下,它使用西班牙语单词作为变量(我是墨西哥人),但我希望你能理解它。
def varianza(finn , datos):
import array
from array import array
import time
ind = 1
nind = int(ind)
intervaloss = 1
intervalossn = int(intervaloss)
intervalo = 1
rango1 = array('i')
rango1 = [0] * 100
rango2 = array('i')
rango2 = [0] * 100
frecuencia = [0] * 100
for i in range(0,finn):
print("Dime el RANGO del (%d) intervalo", intervalo)
print("De")
rango1[nind] = input(">")
print("A")
rango2[nind] = input(">")
print("Dime la FRECUENCIA del (%d) intervalo" , intervalossn)
frecuencia[nind] = input(">")
nind = nind + 1
intervalossn = intervalossn + 1
intervalo = intervalo + 1
nind = ind
numindice = int(ind)
numindice2 = int(ind)
print("De acuerdo ahora calcularé las marcas de clase")
time.sleep(2)
nind = 1
numindice2 = 1
indice = 1
marca = [0] * 100
while nind <= finn:
marca[nind] = ((rango1[nind] + rango2[nind])/2)
print(marca[nind])
nind = nind + 1
marcanum = int(marca)
print("Listo!")
print("Lo siguiente es calcular la multiplicacion de las frecuencias por las marcas de clase")
time.sleep(2)
nind = 1
while nind <= finn:
fx[nind] = frecuencia[nind] * marca[nind]
print(fx[nind])
nind = nind + 1
print("Listo")
print("Ya casi terminanamos!")
print("Ahora debo calcular la media aritmetica")
print("Espera, se estan realizando los calculos")
print("Para esto necesitare que me des una pequeña ayuda")
print(fx[1:fin])
resultado = input("¿Puedes sumar todos los numeros de arriba e indicarmelo aqui abajo? \n>")
print("Gracias!")
time.sleep(1)
print("Siguiendo con el calculo")
aritmetica = resultado/datos
print(aritmetica, "es tu media aritmetica")
time.sleep[1]
print("Realizando siguientes calculos...")
time.sleep(2)
nind = 1
while nind <= finn:
xmenxnum[nind] = (marca[nind] - aritmetica) * (marca[nind] - aritmetica)
print(xmenxnum[nind])
nind = nind + 1
os.system('cls')
print(" Equis menos media aritmetica al cuadrado: ")
print(xmenxnum[1:fin])
nind = 1
while nind <= finn:
xmenxnum[nind] = (marca[nind] - aritmetica) * (marca[nind] - aritmetica)
fxx2[nind] = xmenxnum[nind] * frecuencia[nind]
print(fxx2[nind])
nind = nind + 1
print("¿Puedes decirme la suma de los siguientes numeros?")
sumatoriafinal = input(">")
varianza = sumatoriafinal/datos
varianzanum = int(varianza)
desviacion = math.sqrt(varianzanum)
print("Tu varianza es", varianzanum)
print("Y tu desviacion estandar es", desviacion)
我相信你的问题在这里。
sumatoriafinal = input(">")
varianza = sumatoriafinal/datos
的input()
函数接受用户的输入和converts it to a string。这就是为什么你收到你的TypeError: unsupported operand type(s) for /: 'str' and 'int'
错误 - 你试图分割一个字符串(sumatoriafinal
)和一个整数(datos
)。
尝试这样做,而不是:
sumatoriafinal = input(">")
varianza = int(sumatoriafinal)/datos
注意:如果这是Python 3,那么是的,这就是'input'的作用(它不一定是AFAICT;打印是Py3样式,但是'__future__'导入可以在Py2中使用,并且可能会被省略。在Py2中,它做了一些愚蠢的事情(相当于将Py3的'input'包装在'eval'中),并且OP可能会看到一个使用Py2的'input'并且不正确地借用Py3的例子。 – ShadowRanger
只投你想参选作为这样一个int:INT( “4”)。具体来说,用户输入的任何内容都应该作为int来投射。 – digitaLink
在附注上,为什么要在函数定义中导入?这将导致每次调用函数时都会导入这些导入,这是浪费和不必要的。只需在脚本的顶部导入所需的所有内容即可。 –