第 2 章: Python の変数とデータ型
1. バイナリおよび文字エンコーディング
-
ビットの記憶内容は 0 と 1 で、ビットはコンピュータ内の最小の記憶単位です。
-
データ: 各記号 (英語、数字、記号など) は 1 バイトのレコードを占め、各中国語は 2 バイトを占めます。
-
バイナリ変換: 1B(バイト)=8b(ビット) ; 1KB=1024B
-
[オンライン ASCII テーブル]( ASCII テーブル | ルーキー チュートリアル (runoob.com) )
-
文字エンコーディングの開発
2. Python の識別子と予約語
2.1 予約語
- 予約語とは何ですか
- Python によって特定の意味が割り当てられる単語がいくつかあり、これらの単語はオブジェクトに名前を付けるときに使用しない
- 予約語を表示する
import keyword
print(keyword.kwlist)
- 予約語とは何ですか
['False', 'None', 'True', '__peg_parser__', 'and', 'as',
'assert', 'async', 'await', 'break', 'class', 'continue',
'def', 'del', 'elif', 'else', 'except', 'finally', 'for',
'from', 'global', 'if', 'import', 'in', 'is', 'lambda',
'nonlocal', 'not', 'or', 'pass', 'raise', 'return',
'try', 'while', 'with', 'yield']
2.2 識別子
- 識別子とは何ですか
- 変数、関数、クラス、モジュール、その他のオブジェクトは識別子に基づいて名前が付けられます
- 識別子の命名規則
- 文字、数字、アンダースコアのみを含む_
- 数字で始めることはできません
- 予約語は使用できません
- 大文字と小文字を厳密に区別する
3. Python の変数とデータ型
3.1 変数
-
変数とは何ですか
-
変数は、必要なデータを入れるメモリ内のラベル付きボックスです。
-
name = "Python"
-
その中には: name - 変数名、= -代入演算子、Python - 値
-
-
-
変数の構成要素
- 識別: オブジェクトが保存されているメモリ アドレスを識別し、組み込み関数 id(obj) を使用して取得します。
- Type: オブジェクトのデータ型を示します。組み込み関数 type(obj) を使用して取得できます。
- 値: オブジェクトに格納されている特定のデータを示します。値は関数 print(obj) を使用して出力できます。
-
メモリ分析グラフ
-
コード分析
- コードの書き方
name = '巧克力酸奶' print('标识', id(name)) print('类型', type(name)) print('值', name)
- 出力結果
标识 2830801861584 类型 <class 'str'> 值 巧克力酸奶
3.2 変数の多重代入
- 複数の代入の後、変数は新しいスペースを指します。
- メモリ図
-
コード分析
- コードの書き方
name = "玛利亚" print(id(name)) name = "楚留香" print(name) print(id(name))
- 結果分析
2151611071440 楚留香 2151611071728
3.3 データ型
- 一般的なデータ型
データの種類 | 文字表現 | 例 |
---|---|---|
整数型 | 整数 | 98 |
浮動小数点型 | 浮く | 3.1415926 |
ブール型 | ブール | 真/偽 |
文字列型 | str | 「人生は短すぎる、私はPythonを使う」 |
- type() 関数を使用してデータ型を出力します。
3.3.1 整数型
- 英語は integer であり、intと略され、正の数、負の数、およびゼロを表すことができます。
- 整数のさまざまな基数表現
ウィンドウ プラットフォームは、
Win+R
入力後calc
、すぐに計算機をディスパッチできます。
16進数 | 基数 | 数日ごと | 症状の発現 |
---|---|---|---|
10 進数 (デフォルト) | 0、1、2、3、4、5、6、7、8、9 | 10 | 120 |
バイナリ | 0,1 | 2 | 0b101011 |
8進数 | 0、1、2、3、4、5、6、7 | 8 | 0o166 |
16進数 | 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F | 16 | 0x76 |
-
コードデモ
- コードの書き方
# 整数类型,正数,负数,0 n1 = 90 n2 = -90 n3 = 0 print(n1, type(n1)) print(n2, type(n2)) print(n3, type(n3)) # 正数可以表示为二进制,十进制,八进制,十六进制 print("十进制", 118) print("二进制", 0b1010111) print("八进制", 0o176) print("十六进制", 0x78A2)
- 結果分析
90 <class 'int'> -90 <class 'int'> 0 <class 'int'> 十进制 118 二进制 1010111 二进制 87 八进制 126 十六进制 30882 Process finished with exit code 0
3.3.2 浮動小数点型
-
英語はfloat で、浮動小数点数は整数部と小数部で構成されます。
-
浮動小数点ストレージは非決定的です
- 浮動小数点数を使用して計算する場合、小数点が不確かになる場合があります
- 解決策:モジュールの 10 進数をインポートする
-
コードデモ
- コードの書き方
a = 3.14159 print(a, type(a)) # 小数点位不确定 n1 = 1.1 n2 = 2.2 n3 = 2.1 print(n1 + n2) print(n1 + n3) # 解决方案:**导入模块decimal** from decimal import Decimal print(Decimal("1.1")+Decimal("2.2"))
- 結果分析
3.14159 <class 'float'> 3.3000000000000003 3.2 3.3 Process finished with exit code 0
3.3.3 ブール型
-
英語名 boolean ( boolと省略)は、true または false の値を表すために使用されます。
-
True は true、False は false
-
ブール値は正の数値に変換できます
- 本当——>1
- 偽—>0
-
コードデモ
- コードの書き方
f1 = True f2 = False print(f1, type(f1)) print(f2, type(f2)) # bool型可以转成整型运算 print(f1 + 1) print(f2 + 1)
- 結果分析
True <class 'bool'> False <class 'bool'> 2 1 Process finished with exit code 0
3.3.4 文字列型
-
文字列は不変の文字列とも呼ばれます
-
一重引用符
' '
、二重引用符" "
、三重引用符を使用して定義できます''' ''
。' または""" """
-
一重引用符と二重引用符で定義された文字列は1 行に入力する必要があります
-
三重引用符で定義された文字タイプは、複数の連続した行に分散できます。
-
コードデモ
- コードの書き方
str1 = '人生苦短,我用Python' str2 = "人生苦短,我用Python" str3 = """人生苦短, 我用Python""" str4 = '''人生苦短, 我用Python''' print(str1, type(str1)) print(str2, type(str2)) print(str3, type(str3)) print(str4, type(str4))
- 結果分析
人生苦短,我用Python <class 'str'> 人生苦短,我用Python <class 'str'> 人生苦短, 我用Python <class 'str'> 人生苦短, 我用Python <class 'str'> Process finished with exit code 0
3.4 データ型変換
- データ型変換が必要な理由
- 異なるデータ型のデータを結合する場合に必要
- データ型変換の関数
関数名 | 効果 | 予防 | 例 |
---|---|---|---|
str() | 他のデータ型を文字列に変換する | 引用符を使用して変換することもできます | str(123) 123' |
int() | 他のデータ型を整数に変換する | 1.テキストおよび 10 進数の文字列は整数に変換できません 。 2.浮動小数点数は整数に変換されます: 消去と丸め |
int('123') |
浮く() | 他のデータ型を浮動小数点数に変換する | 1.テキスト クラスは整数に変換できません。 2.整数は末尾が .0 の浮動小数点数に変換されます。 |
float('9.9') float(9) |
- データ変換の図
-
コードデモ
- コードの書き方
name = '张三' age = 20 print(type(name), type(age)) # 说明name和age的数据类型不相同 # print('我叫'+name+'今年'+age+'岁') # TypeError: can only concatenate str (not "int") to str print('我叫' + name + ',今年' + str(age) + '岁') print('------------str():将其他类型转换成str类型--------------') a = 10 b = 198.8 c = False print(type(a), type(b), type(c)) print(str(a), str(b), str(c), type(str(a)), type(str(b)), type(str(c))) print('------------int():将其他类型转换成int类型--------------') s1 = '128' f1 = 98.1 s2 = '76.77' ff = True s3 = 'Hell0' print(type(s1), type(f1), type(s2), type(ff), type(s3)) print(int(s1), type(int(s1))) # 将str转换成int类型,字符串为 数字串 print(int(f1), type(int(f1))) # 将float转换成int类型,截取整数部分,舍掉小数部分 # print(int(s2), type(int(s2))) # ValueError: invalid literal for int() with base 10: '76.77'mm,字符串为小数串 print(int(ff), type(int(ff))) # print(int(s3), type(int(s3))) ValueError: invalid literal for int() with base 10: 'Hell0',字符串必须为整数数字串才能转换 print('------------float():将其他类型转换成float类型--------------') ss1 = '128.98' ss2 = '76' fff = True ss3 = 'Hell0' i = 98 print(type(ss1), type(ss2), type(fff), type(ss3), type(i)) print(float(ss1),type(float(ss1))) print(float(ss2),type(float(ss2))) print(float(fff),type(float(fff))) # print(float(ss3),type(float(ss3))) # ValueError: could not convert string to float: 'Hell0' print(float(i),type(float(i)))
- 結果分析
<class 'str'> <class 'int'> 我叫张三,今年20岁 ------------str():将其他类型转换成str类型-------------- <class 'int'> <class 'float'> <class 'bool'> 10 198.8 False <class 'str'> <class 'str'> <class 'str'> ------------int():将其他类型转换成int类型-------------- <class 'str'> <class 'float'> <class 'str'> <class 'bool'> <class 'str'> 128 <class 'int'> 98 <class 'int'> 1 <class 'int'> ------------float():将其他类型转换成float类型-------------- <class 'str'> <class 'str'> <class 'bool'> <class 'str'> <class 'int'> 128.98 <class 'float'> 76.0 <class 'float'> 1.0 <class 'float'> 98.0 <class 'float'> Process finished with exit code 0
4. Python でのコメント
-
メモとは何ですか
- コード内のコードの機能を説明する注釈付きテキストにより、コードの読みやすさが向上します。
- コメントの内容は Python インタープリターによって無視されます。
-
一般的な注釈の種類
- 単一行のコメント --> **#** で始まり改行の終わりまで
- 複数行コメント --> 個別の複数行コメントマークはなく、三重引用符で囲まれたコードを複数行コメントと呼びます。
- 中国語のエンコード ステートメントのコメント --> ファイルの先頭に中国語のステートメントのコメントを追加して、ソース コード ファイルのエンコード形式を指定します
- コーディング:gbk
- コーディング:UTF-8
-
コードデモ
- コードの書き方
# 输出功能(单行注释) print('hello') '''嘿嘿, 这里是多行注释 啦啦啦啦啦'''