【问题标题】:Why does " TypeError: unsupported operand type(s) for /: 'str' and 'int' " pop up?为什么会弹出“TypeError: unsupported operand type(s) for /: 'str' and 'int'”?
【发布时间】:2020-04-17 08:30:02
【问题描述】:

为什么会弹出“TypeError: unsupported operand type(s) for /: 'str' and '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
回溯(最近一次通话最后一次):
文件“main.py”,第 12 行,在
print("中位数:" + str(statistics.median(list_num)))
文件“/usr/lib/python3.4/statistics.py”,第 318 行,中位数
返回 (data[i - 1] + data[i])/2
TypeError: 不支持的操作数类型 /: 'str' 和 'int'

【问题讨论】:

    标签: python string int command-line-arguments median


    【解决方案1】:

    您正在尝试使用字符串进行计算。在计算中位数之前不要将列表中的项目转换为字符串

    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)))
    

    我已经为 float() 函数更改了 str() 函数。您也可以使用int(),具体取决于您想要实现的目标。

    此外,您正在将模式和中值函数的结果转换为字符串。字符串是文本,而不是数字。你确定这是你想要做的吗?

    【讨论】:

    • 非常感谢! :) 是的,我绝对搞砸了。
    • 很高兴我能帮上忙!请不要忘记通过单击否决按钮下方的复选图标来接受我的回答(:
    【解决方案2】:

    作为参数的数组 list_num 应该由数字、整数或浮点数组成。你有一个字符串列表:['1', '2', '3', '3', '4', '8']。应该是:[1, 2, 3, 3, 4, 8],不带单引号。

    【讨论】:

      猜你喜欢
      • 2021-03-27
      • 2020-04-14
      • 1970-01-01
      • 2021-12-25
      • 2020-04-04
      • 2016-04-29
      • 2023-04-02
      • 2016-08-30
      • 1970-01-01
      相关资源
      最近更新 更多