備忘録
●次のコードの出力結果として正しいものはどれか。
fruits = ['apple', 'kiwi', 'plum']
for f in fruits[:]:
if len(f) < 5:
fruits.insert(0, f)
fruits.pop()
print(fruits, end = ' ')
【正答】
['plum', 'kiwi', 'apple']
【解説】
まずfruits[:]により、リストfruitsの全要素のコピーを取得します。
コピーを使って変数fへ1要素ずつ代入処理するため、'apple' ,'kiwi', 'plum'の順に計3回ループ処理が行われます。
◆for①
f:'apple'
fruits:['apple', 'kiwi', 'plum']
◆for②
f:'kiwi'
fruits:['kiwi', 'apple', 'kiwi'] # fruits.pop()によって末尾の'plum'は取り除かれる。
◆for③
f:'plum'
fruits:['plum', 'kiwi', 'apple'] # fruits.pop()によって末尾の'kiwi'は取り除かれる。
●次のような結果を得たい場合、コードの【A】の行に入る適切なものはどれか。
[ 実行結果 ]
Found an even number: 2
Found an odd number: 3
Found an even number: 4
Found an odd number: 5
Found an even number: 6
[ コード ]
for num in range(2, 7):
if num % 2 == 1:
print("Found an odd number:", num)
【A】
print("Found an even number:", num)
【正答】
continue
【解説】
for num in range(2, 7): により、変数numは2~6まで変化し、計5回ループ処理が行われます。
[実行結果]から、numが2で割り切れない場合はif文中の処理を、それ以外はif文を抜けて後続処理へ進めたいため、【A】にcontinueを記載することでループの次のイテレーションを実行させることができます。
continueではなくbreakを記載した場合、numが3のときにfor文が終了となる。
[ 実行結果 ]
Found an even number: 2
Found an odd number: 3
[ コード ]
for num in range(2, 7):
if num % 2 == 1:
print("Found an odd number:", num)
break
print("Found an even number:", num)
● 次の結果を得たい場合に、コード【A】に入るものとして適切なものはどれか。
[ 実行結果 ]
[(2, 'a'), (3, 'b'), (1, 'c')]
[ コード ]
pairs = [(3, 'b'),(1, 'c'),(2, 'a')]
pairs.sort(key =【A】)
print(pairs)
【正答】
lambda arg:arg[1]
【解説】
リストpairsをソートする際のキーを、ラムダ式で引数として渡しています。
arg:arg[1]は、仮引数:式[インデックス]を表しているため、arg[1]では英字(a,b,c)を、arg[0]とした場合は数字(1,2,3)をキーとした昇順ソートが行われます。
なおargはあくまで仮引数のため、「x:y」や「pair:pair」などでも問題ありません。
●次のコードの実行結果として正しいものはどれか。
a = [1,3,4,6,3,5]
a.insert(3, -1)
a.pop(4)
a.remove(3)
print(a)
【正答】
[1, 4, -1, 3, 5]
【解説】
・a.insert(3, -1)
→ a[3]の位置に-1を挿入する
[1,3,4,-1,6,3,5]
・a.pop(4)
→ a[4]の要素を取り除く
[1,3,4,-1,3,5]
・a.remove(3)
→aから"値の3"を削除する
[1,4,-1,3,5]
※複数ある場合は先頭の1つだけ削除
●対話モードで入力したときに「True」が返されるものは次のうちどれか。
1. (1, 2, 5, 20, 30) > (2, 3, 4, 5)
2. 'PHP' > 'Perl' > 'Python'
3. 'Matplotlib' > 'NumPy' > 'pandas' > 'scikit-learn'
4. (2,3,('aa','ab')) < (2,3,('abc','a'),5)
5. (-1, -10, -2, -5) > (-1, -2, -5)
【正答】
4. (2,3,('aa','ab')) < (2,3,('abc','a'),5)
【解説】
イテラブルオブジェクト同士の比較の場合、それぞれの1つ目の要素から順番に取り出して比較されます。
合計や平均で比較するわけではありません。
例えば1.の場合、まず1>2と比較され、答えはFalseのため、後ろの要素の比較は行われません。
正答の4.の場合、('aa')<('abc')の要素で文字コードポイントによる比較が行われ、Trueとなります。
●次のコードを実行したときの処理として、正しいものはどれか。
import requests
url = 'https://www.google.com/'
for count in range(3):
try:
requests.get(url)
print('success')
except Exception:
print('error')
else:
break
else:
print('final')
【選択肢】
1.1回目でurlへのリクエストが成功すると、「success」と「final」が表示される。
2.1回目でurlへのリクエストが成功すると、「success」だけ表示される。
3.urlへのリクエストを3回繰り返してすべて失敗すると、「error」が3回表示され、「final」は表示されない。
4.urlへのリクエストが2回目で成功すると、「success」だけ表示される。
【正答】
2.1回目でurlへのリクエストが成功すると、「success」だけ表示される。
【解説】
ループ処理で3回urlへのアクセスを試みます。
try節が成功した場合:else節でbreakされ、for文を抜けます。
try節で失敗した場合:except節へ進み、errorを出力する。
'final'を出力するelse節はfor文にかかっており、ループ処理がすべて失敗した場合にのみ実行されます。
そのため、本門の実行結果は以下の3パターンに分かれます。
<実行結果>
パターン1:成功 → success
パターン2:失敗、成功 → error, success
パターン3:失敗、失敗、成功 → error, error, success
パターン4:失敗、失敗、失敗 → error, error, error, final