Почему «TypeError: неподдерживаемые типы операндов для /: 'str' и 'int'" всплывают? - PullRequest
0 голосов
/ 17 апреля 2020

Почему появляется сообщение "TypeError: неподдерживаемые типы операндов для /: 'str' и 'int'" и как я могу это исправить?

КОД:

import sys
import statistics
list_num = sys.argv[1:]
print(list_num)
for i in range(0, len(list_num)): 
    if list_num[i].isdigit():
        list_num[i] = str(list_num[i])
    else:
        list_num[i] = str(len(list_num[i]))
print(list_num)
print("Mode: " + str(statistics.mode(list_num)))
print("Median: " + str(statistics.median(list_num)))

ВЫХОД:

['1', '2', 'way', 'fdk', '4', 'fdsfdsds']
['1', '2', '3', '3', '4', '8']
Режим: 3
Трассировка (последний последний вызов):
File "main .py ", строка 12, в
print (" Медиана: "+ str (statistics.median (list_num)))
Файл" /usr/lib/python3.4/statistics.py ", строка 318, в медиане
return (data [i - 1] + data [i]) / 2
TypeError: неподдерживаемые типы операндов для /: 'str' и 'int'

Ответы [ 2 ]

0 голосов
/ 17 апреля 2020

Массив list_num, который вы используете в качестве аргумента, должен состоять из чисел, целых чисел или чисел с плавающей точкой. У вас есть список строк: ['1', '2', '3', '3', '4', '8']. Должно быть: [1, 2, 3, 3, 4, 8], без одинарных кавычек.

0 голосов
/ 17 апреля 2020

Вы пытаетесь сделать расчет со строками. Не конвертируйте элементы в списке в строки перед вычислением медианы

import sys
import statistics
list_num = sys.argv[1:]
print(list_num)
for i in range(0, len(list_num)): 
    if list_num[i].isdigit():
        list_num[i] = float(list_num[i])
    else:
        list_num[i] = float(len(list_num[i]))
print(list_num)
print("Mode:", str(statistics.mode(list_num)))
print("Median:", str(statistics.median(list_num)))

Я изменил функции str () для функций float () . Вы также можете использовать int () , в зависимости от того, чего хотите достичь.

Более того, вы конвертируете результат режима и медианные функции в строку. Строка - это текст, а не число. Вы уверены, что это то, что вы хотите сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...