파이썬 초보 : 숫자피라미드 문제.
조회수 2729회
n = int(input())
a=list(range(0,10))
for i in range(1,n+1):
for j in range(i):
print(a[j]+i, end='')
print()
2를 넣었을때는 잘 작동되는데 3부터넣으면 456이 아니라 345가 나와요.
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
3 답변
-
2를 넣었을 때 잘 작동되는 것처럼 보이는 것은 우연입니다. 필연적으로 정상 작동한 게 아니라는 뜻입니다.
n = 3
일 때 코드는 다음 순서대로 동작합니다.- 1부터 4까지 순회해야 하므로
i = 1
로 잡고 다음으로 진행 - 1부터 1까지 순회해야 하므로
j = 1
로 잡고 다음으로 진행 a[1] + 1
프린트- 1부터 1까지 순회가 끝났으므로 줄바꿈을 프린트
i = 2
로 잡고 다음으로 진행- 1부터 2까지 순회해야 하므로
j = 1
로 잡고 다음으로 진행 a[1] + 2
프린트a[2] + 2
프린트 ------> 여기서3
출력됨- 1부터 2까지 순회가 끝났으므로 줄바꿈을 프린트
i = 3
으로 잡고 다음으로 진행- 1부터 3까지 순회해야 하므로
j = 1
로 잡고 다음으로 진행 a[1] + 3
프린트 ------> 여기서도3
출력됨 ------> 어??a[2] + 3
프린트 ------> 여기서는4
출력됨 ------> 어 이거 왜이래???a[3] + 3
프린트 ------> 여기서는5
출력됨 ------> 앗!! 뭔가 이상한데 !!!- 이하 생략
진짜 문제는 어떤 때에 이중 for문 안의 출력 결과값이 같아질 수 있다는 것입니다.
a[2] + 2
=a[1] + 3
이어서 문제가 생긴다는 뜻이지요.
저라면 그냥 이렇게 하겠어요. 문제의 요건만 보면 목록까지 정의해서 쓸 일은 아닙니다.
n = 4 last_print = 0 # 헉 내가 마지막으로 출력한 숫자가 뭐였징 ??? for i in range(n) : # n 이 4 니깐 총 4층을 쌓아야겠구나 for j in range(i+1) : # 1층에선 1개만, 2층에선 2개만 출력해야겠구나 last_print = last_print + 1 # 헉 근데 이번에 출력할 숫자는 마지막에 출력한 숫자보다 1이 커야 해 print(last_print, end = '') # 그걸 출력을 해볼까? print() # 이번 층은 다했으니깐 다음 층 넘어가볼까? # 헉 다 됐넹
- 1부터 4까지 순회해야 하므로
-
num = 20 asdf = 1 for i in range(num): qrweqr = '' for j in range(i + 1): qrweqr += str(j + asdf) + '.' print(qrweqr) asdf += i + 1 """ 1. 2.3. 4.5.6. 7.8.9.10. 11.12.13.14.15. 16.17.18.19.20.21. 22.23.24.25.26.27.28. 29.30.31.32.33.34.35.36. 37.38.39.40.41.42.43.44.45. 46.47.48.49.50.51.52.53.54.55. 56.57.58.59.60.61.62.63.64.65.66. 67.68.69.70.71.72.73.74.75.76.77.78. 79.80.81.82.83.84.85.86.87.88.89.90.91. 92.93.94.95.96.97.98.99.100.101.102.103.104.105. 106.107.108.109.110.111.112.113.114.115.116.117.118.119.120. 121.122.123.124.125.126.127.128.129.130.131.132.133.134.135.136. 137.138.139.140.141.142.143.144.145.146.147.148.149.150.151.152.153. 154.155.156.157.158.159.160.161.162.163.164.165.166.167.168.169.170.171. 172.173.174.175.176.177.178.179.180.181.182.183.184.185.186.187.188.189.190. 191.192.193.194.195.196.197.198.199.200.201.202.203.204.205.206.207.208.209.210. """
-
댓글 입력