1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Python3認定エンジニア基礎試験メモ

Last updated at Posted at 2024-01-28

備忘録

●次のコードの出力結果として正しいものはどれか。
PRIME STUDY第3回 問9
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】の行に入る適切なものはどれか。
PRIME STUDY第3回 問10
[ 実行結果 ]
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】に入るものとして適切なものはどれか。
PRIME STUDY第3回 問16
[ 実行結果 ]
[(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」などでも問題ありません。

●次のコードの実行結果として正しいものはどれか。
PRIME STUDY第3回 問18
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」が返されるものは次のうちどれか。
PRIME STUDY第3回 問24
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となります。

●次のコードを実行したときの処理として、正しいものはどれか。
Exam App
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

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?