현재 솔루션의 문제점을 이해하려고합니다. 문제는 다음과 같다 :. 파이썬 2.7.6를 사용코드 디버깅 : '0-9 사이의 int 목록 가져 오기, 3으로 나눌 수있는 최대 숫자 반환'
는 "당신은 L
이
, 일부 숫자 (0 ~ 9)를 포함하는 목록에서 할 수있는 가장 큰 수를 발견하는 기능 answer(L)
쓰기 이 숫자의 일부 또는 전부이며 3로 나눌 수 있습니다. 숫자를 만들 수 없다면 0을 응답으로 반환하십시오. L
은 1에서 9 자리까지의 숫자를 포함합니다. 같은 숫자가 목록에 여러 번 나타날 수 있으며, 목록의 각 요소는 한 번만 사용할 수 있습니다.
input: (int list) l = [3, 1, 4, 1]
output: (int) 4311
input (int list) l = [3 ,1 ,4 ,1 ,5, 9]
output: (int) = 94311
이 문제 해결하려면 코드입니다 : 나는 내 자신의 샌드 박스에이 과제를 여러 번 테스트 한
import itertools
def answer(l):
'#remove the zeros to speed combinatorial analysis:'
zero_count = l.count(0)
for i in range(l.count(0)):
l.pop(l.index(0))
' # to check if a number is divisible by three, check if the sum '
' # of the individual integers that make up the number is divisible '
' # by three. (e.g. 431: 4+3+1 = 8, 8 % 3 != 0, thus 431 % 3 != 0)'
b = len(l)
while b > 0:
combo = itertools.combinations(l, b)
for thing in combo:
'# if number is divisible by 3, reverse sort it and tack on zeros left behind'
if sum(thing) % 3 == 0:
thing = sorted(thing, reverse = True)
max_div_3 = ''
for digit in thing:
max_div_3 += str(digit)
max_div_3 += '0'* zero_count
return int(max_div_3)
b -= 1
return int(0)
을하고 항상 작동합니다. 그러나 강사에게 제출했을 때 나는 항상 1 케이스 실패했습니다. 이유에 대한 설명이 없습니다. 나는 강사의 시험을 심문 할 수 없다. 그들은 코드에 대해 맹목적으로 투구를했다.
누구든지 내 코드가 3으로 나눌 수있는 가장 큰 정수를 반환하지 못하거나 또는 0이없는 경우 0을 반환하지 못하는 조건에 대한 아이디어가 있습니까? 목록에는 항상 숫자가 하나 이상 있습니다.