处理异常后,继续在for循环中进行下一个迭代

时间:2020-03-31 01:10:21

标签: python

num_list = [195,265,2.7,750]

一旦达到2.7,它就会反复打印“错误”。 处理此异常后,是否可以继续进行下一个迭代?

def palindrome(num_list):
    for num in num_list:
        num_reverse = num[::-1]
        count = 0
        while num != num_reverse:
            try:
                num = int(num)
                num_reverse = int(num_reverse)

                num += num_reverse
                count += 1

                num = str(num)
                num_reverse = num[::-1]
                print(count, num)
            except ValueError:
                print('Error')
            continue

2 个答案:

答案 0 :(得分:0)

确实继续进行下一次迭代(并且甚至不需要continue语句来实现此目的)。

问题在于,在下一次迭代中,会发生相同的事情-由于num = int(num)失败,try块中的代码均未实际发生,因此{的值没有变化{1}}或num

很明显,尽管您进行了描述,但您的num_reverse实际上包含字符串,因为否则num_list将会失败。当输入字符串不能解释为整数时,您似乎想做的是移至 for 循环的下一个迭代(如果是第一次,则应该继续工作)通过所有while循环迭代)。

编写易于理解的正确代码的最简单方法是,使该值在此循环内始终为整数。确保以整数开头,然后创建一个单独的函数以反转值并给您一个整数

num_reverse = num[::-1]

(请注意,只要def with_reversed_digits(an_integer): digits = str(an_integer) return int(digits[::-1]) 实际上是an_integer,它就应该一直有效,因为在转换的字符串中允许前导零。)

现在您可以适当地编写逻辑:

int

答案 1 :(得分:0)

一个简单的解决方案是将您的继续替换为break 我也认为您打算将num变量转换为str

def palindrome(num_list):
    for num in num_list:
        num = str(num)
        num_reverse = num[::-1]
        count = 0
        while num != num_reverse:
            try:
                num = int(num)
                num_reverse = int(num_reverse)

                num += num_reverse
                count += 1

                num = str(num)
                num_reverse = num[::-1]
                print(count, num)
            except ValueError:
                print('Error')
            break

输出

1 786
1 827
Error
1 807