7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

プログラミング未経験者がpythonを学んでみる Part1 ~基本文法編1~

Last updated at Posted at 2018-05-06

#概要
プログラミング未経験者がpythonを学んでいく過程を記録していく、自分用メモ的記事

テキストは↓を使用
59972_ext_06_0.jpg

短期的な目標は、Python 3 エンジニア認定基礎試験の合格
ただ合格するための勉強ではつまらないので、ちゃんと業務に活かせるようにしたい
https://www.pythonic-exam.com/exam/basic

長期的目標としては、DjangoでナウいWEBサービス作ったり
機械学習とかもやってみたり

#諸々のスペック
##書いてる人
30半ばのサラリーマン

工事→オペレータ→構築→設計・運用
と、IT業界の闇を垣間見てきたインフラ系のエンジニア

主にCiscoやJuniperあたりを担当することが多かったが、
現在は所謂WEB系の企業に籍を置いている

最近はネットワークエンジニアでもプログラムを書けなければアカン!
という記事見たり見なかったりしたので
流行りに乗ってpythonなんぞに手を出してみる

ちなみにプログラム経験は皆無である

##マシンスペック
MacBook Pro (13-inch, 2016, Two Thunderbolt 3 ports)
Intel Core i5 2GHz
8GB 1867 MHz LPDDR3
macOS High Sierra 10.13.3

バッテリー交換対象なので早めに対応したい
https://www.apple.com/jp/support/13inch-macbookpro-battery-replacement/

##環境
Python 3.6.5

PyCharm Community Edition
Version: 2018.1.2
Build: 181.4668.75

色々なサイトでおすすめされてるのでPyCharmが良いらしい

#pythonとは?
割と新しめのオープンソースのプログラミング言語
バージョンは2系と3系があるが、今から学習するなら3系が良さそう
(多少動作が違うらしい)

pythonが優れている点は以下

  • 可読性の高さ

pythonはより少ないコードで実行できるよう設計されているので
コードが読みやすく、他の言語に比べれば学習コストは低いらしい

java
public class Main {
    public static void main(String[] args) {
        System.out.println("Hello, world!");
    }
}
python
print("Hello, world!")
  • ライブラリが豊富

ライブラリ(汎用的に使えるプログラムをまとめたもの?)がたくさん公開されているらしい
なんか色々便利に使えるとか何とか

  • オブジェクト指向

オブジェクト指向・・・。聞いたことはあるけど、いまいちピンときませんな・・・
ソフトウェアを開発する上で、効率的な開発を行う為の概念らしい。
学習をしていく中で掴んでいこう!

#基本的な文法

##計算について

pythonで計算を行う場合は、以下の演算子を利用することができる

演算子 説明 結果
x + y xとyの和 1 + 2 3
x - y xとyの差 2 - 1 1
x * y xとyの積 2 * 3 6
x / y xをyで割った商 4 / 2 2.0
x // y xをyで割った商の小数点以下切り捨て 10 // 3 3
x % y xをyで割った商のあまり 10 / 3 1
- x xの符号反転 -1 -1
x ** y xのy乗 2 ** 3 8

数字や文字列などのデータには、それぞれというものが存在している
整数であればint型
浮動小数点数であればfloat型
といった具合

関数 説明 結果
abs(x) xの絶対値 abs(-5) 5
int(x) xを整数(int型)に変換 int(3.14) 3
float(x) xを浮動小数点数(float型)に変換 float(1) 1.0
round(x[,n]) xをn桁にまとめる(nを省略した場合は0) round(3.141592,3) 3.142

実行例

Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 05:52:31) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "copyright", "credits" or "license()" for more information.
>>> 
>>> ((500*18)+(400*(8-2))+(700*(21-5)))*0.9
20340.0
>>> 

##変数について

###変数とは

変数とは、メモリ上に数値や文字列などのデータを一時的に記憶しておく為の領域
変数に付けた名前を変数名と呼ぶ

###変数を使うには
変数に値を記憶するには、変数名 = 値と記述する

>>> test = 100
>>> print(test)
100
>>> 

変数名にはアルファベットや数字、_ (アンダースコア)が使用できるが
数字から始まる変数名は使用できない

また、その他にも_ (アンダースコア)から始まるもの、
予約語 と呼ばれるものも使用ができない

予約語の一覧
and as assert break class continue def 
del elif else except exec finally for from 
global if import in is lambda not or pass
print raise return try while with yield
変数の使用例
$ cat 001.py
test1 = 2
test2 = 3
result = test1 * test2
print(result)

$ python 001.py
6

###print関数で数値に説明を加える
print関数を使うことで、処理結果の画面出力ができるが
数値だけではなく、任意のテキストを出力することも可能
その際は、出力したい内容を"ダブルクォート、もしくは'シングルクォートで囲む
(関数についてはおいおい説明)

print("これはテストです")

また、,カンマで区切ると、複数の値を出力することが出来たり
変数を指定することも出来る

print関数の使用例
$ cat 002.py
test = 100
print("これはテストです" ,test)

$ python 002.py
これはテストです 100

##文字列について

文字列の表現方法

文字列は、"ダブルクォート、もしくは'シングルクォートで囲み、表現することができる
記号が違うだけで、できることは同じ

では、なぜ2つの記号が使えるのか?
それはクォート自身を文字列で表現したい場合があるから

#ダブルクォートを文字列で表現したい場合
print('aaa "bbb" ccc')
aaa "bbb" ccc

#シングルクォートを文字列で表現したい場合
print("aaa 'bbb' ccc")
aaa 'bbb' ccc

###特殊文字を使うときのエスケープシーケンスについて
ダブルクォートやシングルクォートを同時に文字列として使用したい場合は
\を使って、文字をエスケープすることができる

#ダブルクォートの中でダブルクォートを使用
print("aaa \"bbb\" ccc")
aaa "bbb" ccc

###三重引用符の利用
複数行にわたって文字列を記述したい場合は、三重引用符を使用する
三重引用符とは、ダブルクォートやシングルクォートを3つ連続で記述したもの

$ cat 003.py
test = """
aaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbb
cccccccccccccccccccc
"""
print(test)

$ python 003.py
(空行)
aaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbb
cccccccccccccccccccc
(空行)

このままでは、文字列の最初の行と最後の行に空行が挿入されてしまう
三重引用符の前後の改行前に\を置くことで空行を削除することがでる

$ cat 004.py
test = """\
aaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbb
cccccccccccccccccccc\
"""
print(test)

$ python 004.py
aaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbb
cccccccccccccccccccc

###文字同士の結合
文字列と文字列は、+演算子を使うことで結合が出来る

$ cat 005.py
test1 = "aaa"
test2 = "bbb"
test3 = test1 + test2
print(test3)

$ python 005.py
aaabbb

###文字列に変数の値を埋め込む
文字列を結合するにはstr型(文字列型)同士でなくてはならない
str型int型といった結合はエラーが発生してしまう
この場合、int型str型に変換する必要がある

str(数値)

エラーが発生するプログラム
$ cat 006.py
test = 100
print("test" + test)

$ python 006.py
Traceback (most recent call last):
  File "/Users/XXXXXX/PycharmProjects/test/006.py", line 2, in <module>
    print("test" + test)
TypeError: must be str, not int
エラーが発生しないプログラム
$ cat 007.py
test = 100
test = str(test) ⬅️str型に変換
print("test" + test)

$ python 007.py
test100

###format()で値を埋め込む方法
文字列を埋め込みには、format()メソッドを使う方法もある
こちらの方が簡潔にプログラムを記述できる
(メソッドについてはおいおい説明)

"文字列".format(値0, 値1, 値2, ....)

$ cat 008.py
test0 = 1000
test1 = 100
test2 = 1
result = "{0}mm = {1}cm = {2}m".format(test0, test1, test2)

print(result)

$ python 008.py
1000mm = 100cm = 1m

###format()で名前付き引数を使う
名前付き引数を指定して、文字列中に埋め込むことも出来る

$ cat 009.py
test1 = "{age}才 {job}です"
test2 = test1.format(age=30, job="manager")
print(test2)

$ python 009.py
30才 managerです
7
7
2

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
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?