2017-11-29 12 views
4

숫자가 아닌 숫자를 입력하면 숫자를 입력하는 숫자 목록 (세로 막대에서 나뉩니다)을 작성하는 코드를 작성하려고합니다. 그 예외를 0으로 대체합니다. 목록을 내림차순 (가장 큰 것에서 가장 작은 것으로)과 그 사이에 수직 막대로 표시하기위한 것입니다. 이것은 현재 제 코드이지만 작동시키지 못합니다. 블록을 제외한에게 시작된다 try 블록에서 지능형리스트를하는"ValueError"예외가 목록의 항목을 대체하는 방법

fixed_numbers=[] 
for n in numbers: 
try: 
    fixed_numbers.append(int(n)) 
except ValueError: 
    fixed_numbers.append(0) 

당신은 돌아가서 목록을 완료 할 수있는 방법이 없다 :

numbers = input("Please enter several integer numbers separated by 
    vertical bars. ").split('|') 
    for item in numbers: 
     try: 
      numbers = [int(item) for item in numbers] 
     except ValueError: 
      item = item.replace(item,'0') 
    numbers = sorted(numbers, reverse = True) 
    print(' | '.join(str(num) for num in numbers)) 

답변

0

이 같은 뭔가를 찾고있다. 숫자가 아닌 첫 번째 정수 값에 대한

try: 
    numbers = [int(n) for index, n in enumerate(numbers)] 
except ValueError: 
    numbers[index] = 0 

작품, 우리는 그것을 반복하는 동안 여기에 우리가 numbers을 변경하지 않는 경우에만

1
numbers = input("Please enter several integer numbers separated by vertical bars. ") 
numbers = numbers.split('|') 
temp = [] 
for item in numbers: 
    try: 
     temp.append(int(item)) 
    except ValueError: 
     temp.append(0) 
numbers = temp 

참고 : 예를 들면. 같은 작업을 수행하는 또 다른 방법이 될 것입니다 뭔가 당신이 실제로 당신이 인덱스 요소에 할당해야 목록의 요소를 교체 할 경우

def eval_number(s): 
    try: 
     return int(s) 
    except ValueError: 
     return 0 

numbers = input("Please enter several integer numbers separated by vertical bars. ") 
numbers = numbers.split('|') 
numbers = list(map(eval_number, numbers)) 
0

있다.

def int_or_zero(s): 
    try: 
     return int(s) 
    except ValueError: 
     return 0 

for i in range(len(numbers)): 
    numbers[i] = int_or_zero(numbers[i]) 
:

나는 조작 기능과 교체 루프를 분리하는 것