首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何处理ValueError:没有足够的值来解压缩(预期的2,got 1),使用try和got

如何处理ValueError:没有足够的值来解压缩(预期的2,got 1),使用try和got
EN

Stack Overflow用户
提问于 2022-07-21 04:51:23
回答 1查看 44关注 0票数 0

我正在解决问题:油量表通常用分数表示一个油箱中有多少燃料。例如,1/4表示油箱满了25%,1/2表示油箱满了50%,3/4表示油箱满了75%。

代码语言:javascript
运行
复制
while True:
    # enter input: e.g. 1/3
    exp = input("fraction: ")
    x, y = exp.split("/")
    l = ((int(x) / int(y)) * 100) #converts value into percentage
    try:
        v = round(l)
        if v>=99 and v<=100:
            print("F")
            break
        elif v<=1:
            print("E")
            break
        elif v>100:
            pass
        else:
            print(f"{v}%")
            break


    except (ValueError, ZeroDivisionError): #supposed to handle value error and...
        pass

但是对于输入5-10,程序应该被传递。(因为"/“是丢失的),但是我得到了以下错误消息: ValueError:没有足够的值来解压缩(预期的2,got 1),使用了try和以外。

EN

回答 1

Stack Overflow用户

发布于 2022-07-21 05:00:41

您正在尝试从split中获取两个值,但是5-10不能被拆分,因此它只能返回一个值,split不包括在trying中,因此错误停止了您的程序。

只要往上移动就行了。

代码语言:javascript
运行
复制
while True:
    # enter input: e.g. 1/3
    exp = input("fraction: ")
    try:
        x, y = exp.split("/")
        l = ((int(x) / int(y)) * 100) #converts value into percentage
        v = round(l)
        if v>=99 and v<=100:
            print("F")
            break
        elif v<=1:
            print("E")
            break
        elif v>100:
            pass
        else:
            print(f"{v}%")
            break

    except ValueError:
        print("ValueError")
    except ZeroDivisionError:
        print("ZeroDivisionError")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73060849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档