LoginSignup
0
0

「Python の基本」に関する備忘録

Last updated at Posted at 2024-04-01

この記事は以下の本に関する、自分が参考になった点をピックアップした記事です。

型の変換

以下のコードを例に、型の変換について説明します。

name = '1'

new_num = int(name)

print(new_num, type(new_num))

最初に'1'という文字列を変数nameに代入します。

name = '1'

'1'は数値のように見えますが、シングルクォートで囲まれているため文字列型です。
nameの型を数値型に変換して、新しい変数new_numに代入します。

new_num = int(name)

変数new_numの型を確認すると、数値型になっていることがわかります。

name = '1'

new_num = int(name)

print(new_num, type(new_num))
実行結果
1 <class 'int'> # 数値型

反対も同様で、文字列型に変換したいときはstr(name)のように書きます。

name = 1

new_num = str(name)

print(new_num, type(new_num))
実行結果
1 <class 'str'> # 文字列型

複数の文字列を出力する

print関数の( )の中身を,(カンマ)で区切って文字列を追加すると、それぞれの文字列がスペースで区切られて出力されます。

print('Hi', 'John')
実行結果
Hi John

スペースではなく「,」「、」など、別の文字列で区切りたい場合は、sep=','のように区切り文字を指定して print の( )内に追加すると、指定した文字列で区切って出力されます。
sep関数は、複数の要素を文字列で結合する際の区切り文字を指定する関数です。

print('Hi', 'John', sep=',')
print('Hi', 'John', sep='.')
実行結果
Hi,John
Hi.John

終わりの文字列を指定することも可能です。
通常、終わりの文字は改行を意味する\n になっていますが、これを明示的に指定する場合は、引数(括弧内に書く値のこと)にend='\n'と指定します。

print('Hi', 'John', sep='.', end='\n')
print('Hi', 'John', sep='.')
実行結果
Hi.John
Hi.John

この終わりの文字の指定を、end=''のように、シングルクォートの間に何も入れない空文字列にすると、2つの出力が改行されることなく、連続して出力されます。

print('Hi', 'John', sep='.', end='')
print('Hi', 'John', sep='.')
実行結果
Hi.JohnHi.John

もし出力の最後に.(ピリオド)をつけてから改行したい場合は、end='.\n'と指定しましょう。

print('Hi', 'John', sep='.', end='.\n')
print('Hi', 'John', sep='.')
実行結果
Hi.John.
Hi.John

数値の計算

Python を使用して数値を計算する時、四捨五入をする場合はround関数を使用します。
以下の場合、pieという変数の値を小数点以下第2位まで四捨五入する場合、round(pie, 2)と記述します。

>>> pie = 3.14159265358979
>>> pie
3.14159265358979
>>> round(pie, 2)
3.14

数学関数を用いた計算

Pythonには、複雑な計算を行うための数学関数が用意されています。
まず、import mathと入力することで、Pythonのmathライブラリを使用できるようになります。

import math # math ライブラリを使用できるようにする

ここでは、平方根の計算を例にとっています。
たとえば、25の平方根を求めたい場合、math.sqrt(25)のように、mathの後に「関数名」をドットで繋げて記述します。
その結果をresultという変数に格納し、表示します

import math

result = math.sqrt(25)
print(result)
実行結果
5.0

文字列の囲み方

文字列は、単一引用符(シングルクォート)の他に二重引用符(ダブルクォート)でも囲むことができます。

print('hello')
print("hello")```
```:実行結果
hello
hello

ダブルクォートで囲まれた文字列の中にシングルクォートが含まれていても、問題なく表示されます。

print("I don't know")
実行結果
I don't know

ただし、シングルクォートで囲まれた文字列の中にシングルクォートが含まれている場合、エラーが発生します。

print('I don't know')```
```:実行結果
  File "/Users/y.takanashi/PycharmProjects/pythonProject/lesson.py", line 1
    print('I don't know')
                       ^
SyntaxError: unterminated string literal (detected at line 1)

そのため、シングルクォートの前にバックスラッシュを使用してエスケープする必要があります。

print('I don\'t know')
実行結果
I don't know

文字列の途中に改行を入れる

途中で改行を入れたい場合に、\nのように、バックスラッシュと n を組み合わせて改行を入れたい箇所に記述します。

print('Hello. \nHow are you?')
実行結果
Hello. 
How are you?

ただし、文字列の中に\nが含まれていると、意図せず改行が入ってしまうことがあります。
以下の例では、Windows のファイルパスのような文字列を出力しようとしたものの、文字列に\nが含まれてしまっているために、意図しない改行が入ってしまっています。

print('C:\name\name')
実行結果
C:
ame
ame

これを回避するためには、文字列の囲みの前にrを記述します。
このrは raw(生)を省略したもので、raw データ、つまり生のデータを出力するという意味になります。

print(r'C:\name\name')
実行結果
C:\name\name

複数行にわたる文字列の出力

複数行にわたる文字列を出力したい場合は、"""のように二重引用符(ダブルクォート)3つで囲み、その間に文字列を記述します。
こうすると、改行したい箇所に\nでわざわざ指定する必要がなく、記述したところに改行されて出力されます。

print('line1\nline2\nline3')

print("""
line1
line2
line3
""")
実行結果
line1
line2
line3

line1
line2
line3

"""で囲んだ出力の前後にprintの処理を入れてみると、間に空白行が入っていることがわかります。

print('##########')
print("""
line1
line2
line3
""")
print('##########')
実行結果
##########

line1
line2
line3

##########

これは、"""を記述した行も1行としてカウントされているためです。
空白行を入れたくない場合は、以下のように"""の後ろに書く必要があります。

print('##########')
print("""line1
line2
line3""")
print('##########')
実行結果
##########
line1
line2
line3
##########

もっと読みやすい書き方もあります。
最初の"""の直後や、最後の"""の手前の行の最後に\を入れると、空白行が表示されずに、かつ読みやすい書き方になります。
このような行の最後のバックスラッシュは、次の行にそのまま続くという意味です。

print('##########')
print("""\
line1
line2
line3\
""")
print('##########')
実行結果
##########
line1
line2
line3
##########

文字列を連結する

文字列を、演算子を使って連続で表示するということもできます。
*を使って、掛け算のように文字列の回数を指定すると、その回数を繰り返し表示できます。

print('Hi.' * 3)
実行結果
Hi.Hi.Hi.

+を使って文字列を連結することもできます。

print('Hi.' * 3 + 'John.')
実行結果
Hi.Hi.Hi.John.

ソースコードに書いた文字列や数値のことをリテラルと言います。
文字列のリテラル同士をつなげる際は、+でつなげることもできますし、+を省略して並べることも可能です。

print('Py' + 'thon')
print('Py''thon')
実行結果
Python
Python

ただし、文字列を変数に格納した場合は、その変数とリテラルを+なしでつなげることはできません。
変数に格納されてた文字列をリテラルとつなげる場合は、+を使います。

prefix = 'Py'
print(prefix 'thon')
実行結果
  File "/Users/y.takanashi/PycharmProjects/pythonProject/lesson.py", line 2
    print(prefix  'thon')
                  ^^^^^^
SyntaxError: invalid syntax
prefix = 'Py'
print(prefix + 'thon')
実行結果
Python

文字列のスライス

Python には「スライス」という機能があります。
これは、2つのインデックスを指定することで、その間の要素を取り出すというものです。

例えば、文字列の0番目から2番目の文字を表示する場合は以下のように指定します。

word = 'python'
print(word[0:2])
実行結果
py

2番目から4番目までの文字を表示する際には、word[2:5]と指定します。

word = 'python'
print(word[2:5])
実行結果
tho

また、はじまりや終わりのインデックスの指定は省略できます。
はじまりのインデックスを省略すると、最初の文字から取得します。
つまり、0を指定したときと同じです。

word = 'python'
print(word[02])
print(word[:2])
実行結果
py
py

終わりのインデックスを省略すると、はじまりのインデックスの文字から最後までを表示してくれます。

word = 'python'
print(word[2:])
実行結果
thon

スライスする際に、はじまりと終わりのインデックスをどちらも省略して[:]のみ入力すると、文字列全体を取得できます。

word = 'python'
print(word[:])
実行結果
python

ちなみに、文字列のインデックスを指定して、一部の文字を書き換えることはできません。
Python の文字列は、内容を変更できないデータ(イミュータブルなデータ)だからです。

word = 'python'
word[0] = 'j'
print(word)
実行結果
Traceback (most recent call last):
  File "/Users/y.takanashi/PycharmProjects/pythonProject/lesson.py", line 2, in <module>
    word[0] = 'j'
    ~~~~^^^
TypeError: 'str' object does not support item assignment

文字列の一部を変更したい場合は、スライス+による連結を駆使して新しい文字列を作り、それを変数に入れましょう。

word = 'python'
word[0] = 'j' + word[1:]
print(word)
実行結果
jython

文字列のメソッドを使う

PyCharm で文字列の変数を作成し、その変数名の後に.(ドットまたはピリオド)をつけると、一覧が表示されます。
これはメソッドの一覧です。
スクリーンショット 2024-03-28 20.30.50.png

表示されるメソッドの一覧から、startwithという文字列のメソッドを選んで使ってみましょう。
これは対象の文字列が( ) の中に指定した文字列ではじまっているかを調べられるメソッドです。
指定した文字がはじまっていれば結果はTrue、そうでない場合はFalseとなります。
このメソッドの結果をis_startという変数に格納し、print関数で表示してみます。

s = 'My name is John.'
is_start = s.startswith('My')
print(is_start)
実行結果
jython
0
0
1

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