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
答案 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