プログラミング学習Day3(変数・演算子、条件分岐、文字列変換)


 変数、演算子

  • 変数 1文字以上の名前を持っていて値が変わるもの
  • プログラムは上から下に実行される
  • プログラミングは英語でエラーが表示されるのでなんとなく英語でエラーの意味が分かるように。例えばEOL=End Of Line(最後の行)
  • 比較演算子
    • >  より大きい
    • <  より小さい
    • >=  以上
    • =<  以下
    • ==  等値
    • !=  非等値
  • 論理演算子
    • and 左右の条件がTrueであればTrueになる
    • or  左右の条件のどちらかがTrueであればTruenになる
    • not True,Falseのを逆にする
  • ちっちゃすぎす少数は無視? 論理演算子 == で下記の事を発見しました。
a = 1
b = 1.000000000000001
c = 1.0000000000000001
d = 1.0000000000000011
e = 1.0000000000000002

print(a == b)
print(a == c)
print(b == d)
print(a == e)

実行結果

False   #わかる
True    #あ、少数第16位以下は無視されるのか?
True    #うん、やっぱり少数第16位以下は無視されるんだな
False   #いや、少数第16位以下でも2やったら無視されへんのかい

このへん、なんか奥が深そうなのでそっとしておきます。

条件分岐

  • if 条件式:を使うと条件式に当てはまるものだけその後のアクションを実行できる。例えばaという変数があって、aが10の時だけOKと出力したい場合
a = 10
if a == 10:
    print("OK")

出力結果は下記の通り
a = 10 の時

OK

a = 1 の時


なにも出力されません。

何も出力されないのが不安だという場合。条件に当てはまらないときの実行をelseを使って指示することも出来ます。
aが10の場合はOK, aが10 でない場合はNGと出すなら下記のように書けます。elseを付けてあげるとifに当てはまらない場合の実行結果を指示できます。

a = 10
if a == 10:
    print("OK")
else:
    print("NG")

aが10の場合

OK

aが10以外の場合

NG

その他にも条件を複数設定した場合はelifというものもある。

文字列操作

  • 文字をつなげる +
  • 文字列を探す find
  • 文字列を大文字にするupper
  • 文字列を小文字にするlower
  • 文字列を変換するreplace

以下使用例

str = "I am happy." #例文
print(str + str) #文字列を繋げる
print(str.upper()) #全部大文字に変換
print(str.lower()) #全部小文字に変換
print(str.replace("I am", "You are")) #文字列を置き換え

出力結果

I am happy.I am happy. #strの中身が繋げられて繰り返し表示される
I AM HAPPY. #全部大文字になっている
i am happy. #全部小文字になっている
You are happy. #"I am"が"You are"に変化されている

疑問
下記の書き方では出力は元の文字列のままになってしまう

str = "Happy"
str.upper()
print(str)

出力結果

Happy

2行目の大文字変換の関数が3行目のプリント関数に影響しないということだと思うがなぜこんな仕様なのだろうか。もっと勉強していけばわかるのだろうか。。。