(list 관련)큰 값부터 앞에서 나오게 출력하는 방법은?

2019. 04. 10. 13:16
temp=0
a=[0,0,0,0]
a[0]=str(input("1번째 숫자 : "))
a[1]=str(input("2번째 숫자 : "))
a[2]=str(input("3번째 숫자 : "))
a[3]=str(input("4번째 숫자 : "))


for i in range(0,3):
    max=i
    for j in range(0,3):
        if a[j]<a[max]:
            max=j
    temp=a[i]
    a[i]=a[max]
    a[max]=temp

for i in range(0,4):
    print(a[i], end="")

숫자를 입력받은 후, 큰 값부터 앞에나오게 출력하고싶었는데 원치 않는 숫자들이 찍히네요ㅠㅠ c언어에서 정렬부분에 있는부분을 똑같이 따라해서 파이썬에 적용해보았는데 적용이 되지 않습니다. 어느 부분에서 막힌지 알려주시면 감사하겠습니다.

공유하고 보상받기 ♥︎

총 1개의 답변이 있습니다.

질문자 채택 답변

코드 조금만 고치면 되겠네요

# -*- coding: utf-8 -*-

a = [0,0,0,0]
a[0]=int(input("1번째 숫자 : ")) // input은 문자열을 입력받습니다.
a[1]=int(input("2번째 숫자 : ")) // 숫자로 바꾸려면 int를 쓰면 됩니다.
a[2]=int(input("3번째 숫자 : ")) // str은 문자열로 바꿀 때 쓸 수 있습니다.
a[3]=int(input("4번째 숫자 : ")) // 여기서는 str이 아니라 int를 쓰면 됩니다.

for i in range(0, 4): // 0부터 3까지는 range(0, 4)입니다. 3이 아니에요!!
    max = i // 바깥쪽 for문 한 번 돌 때 (맨 앞부터) 하나씩 정렬된 상태가 됩니다.
    for j in range(i, 4): // 그러므로 안쪽 for문에서는 하나씩 빼고 돌아야 합니다.
        if a[j] > a[max]:
            max=j
    a[i], a[max] = a[max], a[i] // 변수 a와 b의 값을 바꾸려면 a, b = b, a로 하면 됩니다.

for i in range(0,4):
    print(a[i], end="")
2019. 04. 10. 14:16
96