-
웹/파이선 프로그래밍 Quiz 모음카테고리 없음 2023. 3. 28. 15:47
< 퀴즈 01 해설 >
< 퀴즈 02 해설 >
< 퀴즈 03 해설 >
< 퀴즈 04 해설 >
⭐
답 : 30
⭐
답 : False
⭐⭐
답 : True
해설 : 파이선에서는 15자리까지만 소수점으로 인정하고 이후에 작성되는건 올림처리한다. 따라서 2.9999999999999999는 3과 같다.
ㄴ ⭐
답 : HelloWorld
⭐⭐⭐
답 : (an empty string)
해설 : 문자열 곱셉에서 양수면 그 문자열을 반복하라는 의미인데 0이나 음수가 곱해지면 empty string이 나옴.
⭐
답 : l
⭐
답 : lo
⭐
답 : lo
⭐⭐⭐
답 : (an empty string)
해설 : 범위가 이상한 슬라이싱을 print하면 empty string이 나옴.
⭐⭐⭐
답 : (an empty string)
해설 : 이상한 범위의 슬라이싱 -> emtpy string
⭐
답 : Hello
⭐
답 : Hlo
⭐⭐
답 : olH
⭐⭐
답 : False
해설 : isalpha()는 해당문자열이 전부 영어로 구성되어있을때만 True를 반환한다.
⭐⭐
답 : isalnum()은 해당문자열이 전부 영어or숫자로 구성되어있을때만 True를 반환한다.
< 퀴즈 05 해설 >
⭐
답 : HelloWorld
해설 : 문자열 덧셈
⭐⭐
답 : (an empty string)
해설 : 문자열 곱셈에서 양수는 그만큼 반복을 의미하고 0이나 음수가 곱해지면 empty string이 반환된다.
⭐
답 : lo
해설 : s[-2] = l이고 끝까지 슬라이싱하므로 lo가 출력
⭐
답 : Hello
해설 : list인덱스의 범위를 엄청 넘어가는 수가 나오면 그냥 전체가 출력됨.
⭐⭐
답 : (an empty string)
해설 : 리스트 슬라이싱 시에 범위가 이상하게 나오면 빈 string이 출력된다.
⭐⭐
답 : Hello HELLO
해설 : upper() 메소드는 기존의 것은 그대로놔두고 새로 저장하기때문에 s1는 기존의 것으로, s2는 새로 저장한다. (+lower()함수도 동일)
⭐
답 : 7
해설 : 리스트에 ,다음에 뭐 안붙어도 에러안뜸.
⭐
답 : [2, 2, 3, [4, 5], 6]
해설 : L1=L2는 아무것도아님. 모든 수정사항이 둘다 반영됨.
⭐
답 : [1,2,3,[4,5],6]
해설 : L2=L1[:]은 shallow copy를 의미함. 그러므로 리스트안리스트는 공유하는데 나머지는 공유하지않음.
⭐
답 : [1,2,3,[5,5],6]
해설 : L2=L1.copy()는 shallow copy이므로 리스트안리스트의 원소변경은 둘다 적용됨. 이를 피하려면 deep.copy()를 사용해야함.
< 퀴즈 06 해설 >
⭐
답 : olleH
해설 : -1단계로 처음부터 끝까지 print이므로
⭐⭐⭐
답 : [1,2,3,[5,5],6]
해설 : L1.copy()는 shallow copy이므로 리스트안 원소의 변경은 유의미하지만 리스트안리스트의 원소변경은 무의미하다. 따라서 l2를 바꿔도 l1에도 그 내용이 적용된다.
- copy가 아예 아닌거 : people = students하면 리스트자체와 그 안의 원소 전부 같은 메모리주소.
- shallow copy : people = students[:] 하면 리스트자체는 다른 메모리주소이고 그 안의 원소는 동일한 메모리 주소. people[0] = 'a'로 변경하면 people과 students는 달라짐. (위의 경우는 바꾸면 변경값 동일) 근데 리스트안의 리스트가 있을경우 리스트안리스트 값을 변경하면 people이나 students나 동일하게 바뀜.
- deep copy : import copy, people = copy.deepcopy(students)하면 리스트안리스트의 원소를 변경하면 people과 students의 내용이 달라짐.
⭐⭐⭐
답 : [1,2,3] None
해설 : sort함수는 리스트 객체 자체를 정렬해줌. sorted함수는 새로 정렬된 리스트를 반환하는 함수. 또한 sort()함수를 사용한다고 정렬된 목록을 '반환'하지 않음. 그렇기때문에 L2는 None이 출력되고 L1은 정렬된 리스트가 출력됨. 만약 정렬된 리스트를 반환하고 싶다면 sort()가 아닌 sorted()함수를 사용해야함.
L2=sorted(L1)
- list.sort()함수는 리스트에만 사용가능.
- 정렬시 기준은 아스키코드값. 그래서 대문자가 소문자보다 먼저 정렬됨.
- 기본값(오름차순) : a.sort() / 오름차순 : a.sort(reverse=False)
내림차순 : a.sort(reverse=True)
⭐
답 : TypeError
해설 : 튜플은 변경 불가.
⭐⭐
답 : 5
해설 : (숫자) = 그냥 숫자 이므로 T = 4임. 그래서 T가 5로바뀌고 이를 print하면 5가 출력됨.
⭐⭐
답 : {1, 2, "Hello"}
해설 : string = "Hello"이기때문에 답과같이 print됨.
- set은 subscriptable(리스트 슬라이싱이나 인덱싱이 가능함) 해서 set[0]과 같은 코드 불가.
- set안에 변경가능한 객체 불가(리스트, dict, set), tuple은 가능.
⭐
답 : {'Hong', 'Lee', 'Park', 'Kim'}
해설 : set은 중복불가.
⭐⭐⭐
답 : dict
해설 : 암기
- print(type({1})) = set임.
⭐
답 : {'Park1':100, 'Park2':100, 'Park3': 80}
해설 : name[:] = Park이고 Park2를 100으로 변경한 것.
⭐
답 : 90
해설 : names[1] = Kim이고, 얘의 value는 90임.
< 퀴즈 07 해설 >
⭐⭐⭐
답 : ValueError
해설 : input에 입력한 값은 string이 되어 value는 string인 상태이다. 그런데 int(value)라고 해서 오류가 뜸. 오류를 해결하기 위해서는 float(value)로 묶은뒤 이 값을 int(float(value))로 하고 print하면 3이 잘 출력된다.
⭐
답 : leH
해설 : s[2] = l이고 마지막 -1은 뒤로 한칸씩 출력하라는 의미. 두번째 자리가 공백이므로 끝까지 출력하라는 의미이다. 따라서 l부터 왼쪽으로 출력하기 시작하여 leH가 출력됨.
⭐⭐⭐
답 : Error
해설 : 튜플은 변경불가능한 객체인데 이를 변경하려고 하기때문에 Error가 뜨고 'tuple' object does not support item assignment라는 오류메세지가 뜬다.
⭐⭐⭐
답 : [1, 2, 3, {1:2, 2:2}, 4]
해설 : L2는 L1과 동일한 상태에서 L2[3] = {1:1, 2:2}이다. dict에서 [key] = value이므로 L2[3][1] = 키1의 value인 1을 의미하고 이를 +1 하라고 했으니 key1의 value값이 1에서 2로 변경된다.
* 리스트에서 [숫자]는 리스트의 index를 의미하지만, dict에서 [숫자]는 만약 dict의 key중에 숫자가 있다면 걔의 value를 지칭하는 코드이다.
⭐⭐⭐⭐
답 : {1,2}
해설 : (1)은 1과 동일하게 취급되어 S에 T를 넣는다 하더라도 1이 중복된다. S는 set이기 때문에 중복이 불가하므로 print(S)를 하면 {1,2}가 나온다.
* print((1)) = 1
⭐⭐⭐
답 : KeyError
해설 : str(names)는 [ ] 기호 전부 하나의 문자열로 보게된다. 그래서 str(names) + '1' = "["Park"]1"이라는 문자열이 되기때문에 여기서 += 10의 연산을 할 수 없으므로 KeyError가 뜨는것.
⭐⭐
답 : He
해설 : 사칙연산에서 True == 1이되고, False == 0이 된다. 그러므로 뒤에계산은 0 이되고 앞의계산은 "He" * 1 = "He"이다. 따라서
print("He") = He가 출력된다.
⭐
답 : 1
해설 : L이라는 리스트안에는 빈 튜플이 1개 존재하므로 L값은 True이다. 따라서if L: 에서 L이 True이므로 print(1)이 실행된다.
⭐⭐⭐⭐
답 : Hi 0
해설 : a에는 int 0 이 담기므로 False이고 b에는 str "Hi"가 담기므로 True이다. c는 a가 False, b가 True 이므로 False이다.
따라서 else문이 작동하고 print(b,c)이므로 Hi와 0이 출력된다.(c가 False인데 and연산에서는 False일때 False인놈이 c에 담김)
* 0은 False이다!! False에는 빈 리스트, 튜플 etc.. / 0 / 0.0 / None이 있다.
* print((숫자1개)) = 숫자1개
⭐
답 : SyntaxError
해설 : if 문에서 score = 90이 아니라 score == 90이라고 코드를 짜야 한다.
< 퀴즈 08 해설 >
⭐⭐⭐
답 : 1 2 3
해설 : dictionary에서 for문을 돌리면 키만 출력된다. 따라서 1
2
3
이 출력된다.
* dict에서 키와 값 둘다 사용하고 싶으면 .items() 로 코딩하여 item method를 사용하면 된다.
⭐⭐
답 : 4
해설 : L2 = L1이므로 L2에 append(4)를 한 [1, 2, 3, 4]가 L1에도 적용된다. 그래서 if문에 L1[-1] == L2[-1]이 True이므로 L1[-1]이 출력된다.
⭐⭐⭐⭐⭐
답 : [2, 3, 4, 5, 6]
해설 : l2는 l1에서 원소를 하나씩 받아오고 새로운 list를 작성하기때문에 tuple은 수정불가능하다라는 전제에 어긋나지 않는다. 그래서 print(l2)가 새로운 list가 출력이 되는것이고, print(l1)을하면 여전히 (1,2,3,4,5)가 출력된다.
* list comprehension을 사용할때 [ ]안에 코드를 작성한다.
⭐
답 : [4,8]
해설 : n이 짝수면 제곱을해서 리스트의 원소에 담으라는 말이다.
⭐
답 : 1
해설 : n이 짝수면 print(n)으로 안가고 다시 for문으로 돌아간다(continue 땜에)그래서 n=0일때 다시돌아가고 1일때 if문 건너뛰고 print(1), n=2일때 다시돌아간뒤 끝이남.
⭐
답 : 0
해설 : n=0일때 if건너뛰고 print(0), n=1일때 if문 해당되므로 break구문에의해 for문 종료됨. 따라서 0만 출력됨.
⭐⭐
답 : {}
해설 : val = {}일때 빈 dict이므로 False이다. 그래서 else문을 통과해 {}가 출력된다. 이후 "False"는 문자열이다(그냥 False가 아니므로 혼동 유의)그래서 이값은 True이므로 if문을 통과하여 break를 만난다. 그래서 for문이 종료되고 최종적으로 {}만 출력된다.
* type({}) = dict
⭐
답 : Error
해설 : 소문자 true와 false는 bool이 아니다. 그러므로 true와 false라는 변수를 지정해준적이 없기 때문에 Error가 뜬다.
⭐
답 : k i m(각문자사이는 enter로 구분되어있음)
해설 : 문자열에 for문을 돌리면 하나의 문자씩 for문에 들어간다.
⭐⭐⭐⭐
답 : 6
해설 : n=0,1일때는 n>1이 성립안하므로 그냥 for문이 돌아간다. 이후 n=2이고 m=3을 만나면 2>1이므로 break구문이 실행되고 for m in range(3,6)부분이 종료된다. 그럼 n=2, m=3이므로 6이 출력된다.
< 퀴즈 09 해설 >
⭐⭐⭐
답 : 3
해설 : D1의 key인 1,3의 값이 +1 되고 print(D2[1])은 D2의 키 '1'의 값을 print하라는 의미이므로 1의 값인 3이 출력됨.
- list[인덱스] 이지만 dict[key]임.
⭐⭐⭐
답 : {1: 0, 2: 1, 3: 2}
해설 : Type(S) = dict이다. dict[key] = value임.
⭐⭐⭐
답 : 1
해설 : L은 빈리스트에 False란 값이 들어가있어서 True이다. 따라서 if문을 통과하여 1을 출력함.
⭐⭐⭐
답 : ['"','a','r','k','"']
해설 : "park"가 문자열이므로 p가 아닌놈만 하나씩 출력됨.
⭐⭐⭐
답 : 4
해설 : n=0,1일때는 m이 4까지 for문이 돌아감. 이후 n=2일때 m=0이면 n>1이므로 break만나서 m이 포함된 for문이 종료. 이후 n for문이 돌아가서 n=4이고 m=0이다.
⭐⭐
답 : (infinite loop)
해설 : continue는 아래로 내려가지말고 반복문 다시 돌라는 명령어임. 그래서 m -= 1 못가고 while m>0으로 다시 돌아가는 과정을 무한반복함.
⭐
답 : 4
⭐⭐
답 : None
해설 : result에는 a+b값이 담기지만 실질적으로 plus함수를 실행하면 return값은 항상 None이다.
⭐⭐⭐⭐
답 : (3, -1)
해설 : return값이 여러개면 튜플로 담겨서 반환된다.