Python似乎从不启动循环

2024-09-29 06:33:05 发布

您现在位置:Python中文网/ 问答频道 /正文

当我在终端上运行这个程序时,我从来没有看到任何东西,直到它打印出来30秒后:

killed 9

第一次之后,我将print(i)添加到第23行以查看发生了什么,但它甚至从未打印第一个数字。有件事我不明白。将for循环更改为非常小的数字后,它就可以正常工作了。我不能改变循环的范围,因为这些是我需要查看的确切数字。我该怎么办?你知道吗

  6 def isPandigital(digits):                                                       
  7     sortedDigits = sorted(digits)                                               
  8     numDigits = len(sortedDigits)                                               
  9                                                                                 
 10     if len(set(sortedDigits)) != numDigits:                                     
 11         return False                                                            
 12                                                                                 
 13     for i in range(1, numDigits + 1):                                           
 14         if i != sortedDigits[i - 1]:                                            
 15             return False                                                        
 16                                                                                 
 17     return True                                                                 
 18                                                                                 
 19 primes = [2, 3, 5, 7, 11, 13, 17]                                               
 20 total = 0                                                                       
 21                                                                                 
 22 for i in range(1234567890, 9876543210 + 1):                                     
 23     print(i)                                                                    
 24     digits = [int(dig) for dig in str(i)]                                       
 25     numDigits = 10                                                              
 26                                                                                 
 27     if isPandigital(digits):                                                    
 28         for i in range(numDigits - 3):                                          
 29             newNum = int(''.join(map(str, digits[i:i + 3])))                    
 30             if not (newNum % primes[i] == 0):                                   
 31                 break                                                           
 32         else:                                                                   
 33             total += i

Tags: infalseforlenreturnifrange数字