何も誇れぬ人生の記録

『ぼくは何も誇れないのが誇りだな』沼田真佑、影裏より

イテラブルとイテレータ

イテラブルからイテレータが作られる。イテレータは反復で消費される。

'''文字列 name をファイル名とするファイルの最後の行を
文字列として返す関数 last_line(name) を、 
ファイルオブジェクトに対するfor文を用いて定義してください。

'''
# 自分の解答
def last_line(name):
  with open(name, 'r') as f:
    last_line = ''
    for line in f:
      last_line = line
  return last_line

# 模範解答
def last_line(name):
    with open(name, 'r', encoding='utf-8') as f:
        for line in f:
            pass
    return line

def last_line(name):
    f = open(name, 'r', encoding='utf-8')
    for line in f:
        pass
    f.close()
    return line

'''リストをもらって、そのイテレータを作り、
最初の要素だけ取り出した後、 
そのイテレータを返す関数 but_first(ls) を定義してください。
'''
# 自分の解答
def but_first(ls):
  ls.pop(0)
  return iter(ls)

# 模範解答
def but_first(ls):
    it = iter(ls)
    next(it)
    return it

for i, c in enumerate('ACDB'):
    print(i, '番目の文字 =', c)