GoogleColaboでf-strings構文を使ったらエラーが返ってきた話

GoogleColaboでf-strings構文を使ったらエラーが返ってきた話

こんにちは。BOSSです。

先日Google Colabでディープラーニングの学習をしていたときに

f-stringsに関することでハマりました。

とんでもなく簡単な話だったのですが、もしかしたら他にもそういう方が居るかなということで

(しょぼすぎていないかもしれないですが)

記事にまとめておこうかと思います。

f-stringsが実行されない

今回ハマったのはUdemyの教材を写経していた時でした。

実行しようとした箇所は

print(f"Acc: {acc*100}%")

正直この構文自体初めてみたのですが、写経だったので気にせずやろうと思ってました。

おそらく実行結果としては

ACC: 〇〇%

ってなるんだろうなぁみたいな。


あまり深く考えていませんでした。

すると

    print(f"Acc: {acc*100}%")
                           ^
SyntaxError: invalid syntax

SyntaxError。構文が間違ってるよとのことでした。


なるほど?きっと写経の時にミスったんだなと教材をコピって再度実行してみると

    print(f"Acc: {acc*100}%")
                           ^
SyntaxError: invalid syntax


あれ???
たしかにコピペしたぞ?なぜだ?



沼にはまりました。

(ぶっちゃけると、ブロギルのプログラミング部で質問したら一発で解決しました)

Python3.6から新しく導入されたf-strings文

print(f"Acc: {acc*100}%")

問題解決をはかるには、この構文を知らないといけないですね。

ということで調べてみました。

Pythonには文字列(string)クラスに

str = '〇〇'
str.format()

というメソッドが用意されています。が、あまり柔軟性がなかったようで

Python3.6から上記のようなf-strings文という構文が導入されました。

基本的な使い方として

△△ = '〇〇'
print(f'string value: {△△}' )

とすると、

string value: ○○

という風に表示されます。

問題点

もうお気づきかと思いますが

この構文自体はPython3.6からの導入された構文になります。

ということでPythonのバージョンを確認してみます。

GoogleColabでは

ランタイム>ランタイムのタイプの変更

GoogleColaboの設定 ランタイムのタイプを変更

ここでPythonのバージョンやGPUの使用を設定できます。

こちらを開いてみると

f:id:wataru_boss:20180714121423p:plain

はい。問題解決

Python2で動かしていました。

そーりゃエラー返ってくるわ

こちらをPython3に変えてあげて再度実行してみると

GoogleColaboの設定 ランタイムのタイプの設定 Python2からPython3に変更

無事、実行することができました!

まとめ

まーしょうもないミスでした。

f-stringsって構文を知らなかったのが一番の原因でした。

みなさんも使うときにはお気をつけて!