Python代码实验室关于异常的问题-- Try,Except ValueError

x8diyxa7  于 2023-03-20  发布在  Python
关注(0)|答案(4)|浏览(182)

问题

“三个变量x、y和z应该包含适合转换为整数的数字字符串。编写将它们转换为整数的代码,并打印这三个整数的和。但是,如果任何变量具有无法转换为整数的值,则打印字符串“bad value(s)in:“后跟具有错误值的变量的名称(用空格分隔,按字母升序排列)。
例如,如果x、y和z的值分别为“3”、“9”和“2”,则将打印数字14。另一方面,如果值为“abc”、“15”和“boo”,则输出为:错误值位于:x z”。

**注意:**这个问题来自Turing's Craft CodeLab,它似乎需要一个特定的标准输入才能得到正确的答案。我包含了CodeLab在每次尝试后提供给我的“错误分析”,以给予您了解它正在寻找的格式。
尝试#1

error_output = "Bad values in:"
numeric_output = 0
inputs = input().strip().split(" ")
try:
    x = int(inputs[0])
    numeric_output += x
except ValueError:
    error_output += " x"
try:
    y = int(inputs[1])
    numeric_output += y
except ValueError:
    error_output += " y"
try:
    z = int(inputs[2])
    numeric_output += z
except ValueError:
    error_output += " z"
if error_output != "Bad values in:":
    print(error_output)
else:
    print(numeric_output)

虽然这段代码在Idle和Pycharm上运行都没有问题,但在CodeLab上却不是正确的答案...以下是CodeLab对我的第一次尝试所做的“错误分析":
1.在每个测试用例中:a)stdout不正确和B)未向stdout打印任何内容
1.几乎可以肯定,您应该使用:+
1.我还没有看到正确的解决方案使用:”“
1.我还没有看到正确的解决方案使用:”x”
1.我还没有看到正确的解决方案使用:”是”
1.我还没有看到正确的解决方案使用:”z”
1.我们认为您可能需要考虑使用:==
1.我们认为您可能需要考虑使用:合计
1.采用您的方法的解决方案通常不用途:!=
1.采用您的方法的解决方案通常不用途:.(期间)
1.采用您的方法的解决方案通常不用途:一个
1.采用您的方法的解决方案通常不用途:
1.采用您的方法的解决方案通常不用途:[ ]
1.采用您的方法的解决方案通常不用途:输入
1.采用您的方法的解决方案通常不用途:剥离
1.我们认为您可能需要考虑使用:不是
我的第二次尝试

try:
    print(int(x) + int(y) + int(z))
except ValueError:
    print("bad value(s) in:")
    if not x.isdigit():
        print(' x')
    if not y.isdigit():
        print(' y')
    if not z.isdigit():
        print(' z')
    • 尝试**#2的“错误分析”:

1.在某些测试案例中标准输出不正确
1.几乎可以肯定,您应该使用:=
1.我还没有看到正确的解决方案使用:“中的值不正确:“
1.我还没有看到正确的解决方案使用:'x'
1.我还没有看到正确的解决方案使用:“是”
1.我还没有看到正确的解决方案使用:'z'
1.几乎可以肯定,您应该使用:字符串
1.我们认为您可能需要考虑使用:
,(逗号)**
1.采用您的方法的解决方案通常不用途:值错误
最后,这是我的第三次尝试(根据CodeLab,这是最接近准确的):

try:
    print(int(x) + int(y) + int(z))
except ValueError:
    print("bad value(s) in:",end='')
    if not x.isdigit():
        print('x',end='')
    if not y.isdigit():
        print('y',end='')
    if not z.isdigit():
        print('z',end='')
    • 尝试**#3的“错误分析”:

1.在某些测试案例中标准输出不正确
1.我还没有看到正确的解决方案使用:“中的值不正确:“
1.采用您的方法的解决方案通常不用途:''
1.采用您的方法的解决方案通常不用途:值错误
"我错过了什么"

8ulbf1ek

8ulbf1ek1#

你为什么不试着在每个变量前加空格呢,我想这会有帮助,我也遇到过类似的问题。

try:
    print(int(x) + int(y) + int(z))
except ValueError:
    print("bad value(s) in:",end='')
    if not x.isdigit():
        print(' x',end='')
    if not y.isdigit():
        print(' y',end='')
    if not z.isdigit():
        print(' z',end='')
mzillmmw

mzillmmw2#

这也应该可行,也许:

try:
    print(int(x)+int(y)+int(z))
except ValueError:
    print('bad value(s) in:', end=' ')
    if not x.isdigit():
        print('x', end=' ')
    if not y.isdigit():
        print('y', end=' ')
    if not z.isdigit():
        print('z', end=' ')
tjrkku2a

tjrkku2a3#

sum=0
badvalues=""
try:
    sum += int(x)
except ValueError:
    badvalues += " x"
try:
    sum += int(y)
except ValueError:
    badvalues += " y"
try:
    sum += int(z)
except ValueError:
    badvalues += " z"
if badvalues=="":
    print(sum)
else:
    print("bad value(s) in:"+badvalues)
rt4zxlrg

rt4zxlrg4#

谢谢你们的帮助!我发现答案是:

try:
    sum = int(x) + int(y) + int(z)
    print(sum)
except ValueError:
    print("bad value(s) in:",end=' ')
    if not x.isdigit():
        print('x',end=' ')
    if not y.isdigit():
        print('y',end=' ')
    if not z.isdigit():
        print('z')

相关问题