(対話式プログラムの作成と併せて)第7章ユーザ入力とwhileループ
7.1機能入力()作品
メッセージ=入力(「明快プロンプト」)
、ユーザ入力を待っているプログラムを停止するが、(利用可能なINT()変換など)の文字列を返す
ループのような辞書データ構造の多数を埋めるために組み合わせることができるしながら*
7.2 whileループについて
指定された条件しばらく:
指定した条件が満たされていないまで実行し続け、無限ループを回避する必要性
を満たすの要件の数を条件に実行し続けるならば、あなたはブール変数(「定義することができる前に旗をアクティブかどうかを判断するために、」)
break文:終了のために/ whileループは
continue文:コードの残りの部分を無視し、サイクルの開始に戻るには、継続するかどうかを判断します
7.3を使用しながら、プロセスリストと辞書(収集、保存、入力の多数を組織)に対するループ
ループは+横断するように修正されてもよいしながらリストは、ループのために修正されるべきではありません
- 可動要素のバインディングポップ()リスト
- 削除と合わせて()指定されたすべての値を削除するには
- 結合入力()は、ユーザ入力を使用して充填されている辞書
第8章機能
機能:名前のコードブロック、コード効率の向上、容易なメンテナンス、トラブルシューティング、および異なるプログラムで再利用することができます
8.1定義関数
定義された:DEF関数名(パラメータ):
コール:関数名(引数)
*使用して、記述関数の名前を、読みやすさを向上
8.2パス引数
(1)位置引数:同じ引数順序パラメータ
(2)キーワード引数:順序に関係なく、名前を渡す-このようなタイプ=「犬」などの値の組、
パラメータを指定することができ、デフォルト値を、明示的よりも低い優先度を提供引数;最後のパラメータがリストに配置する必要がデフォルト値と
するとき、空の文字列にデフォルト値がセット、パラメータが考慮され得る任意の値の異なる状況の機能を簡素化ように、
指定された引数の数またはタイプが要件を満たしていないとき、それはなりエラーにつながります
8.3戻り値のリターン(簡易メインルーチン)
戻り値は、リストや辞書などの、任意のタイプのものとすることができます
8.4転送リスト
永久修正、大量のデータを効率的に処理;転送[:]コピーを変更することはできませんが、注意の効率が低下します
。各機能は、特定のジョブの責任を負わなければならない*、それは一連のステップに複雑なタスクに役立ちます
8.5任意の数の引数を渡します
*パラメータ名:空のタプルを作成し、引数の値の任意の番号を受信
**パラメータ名:空の辞書、キーを受け取った任意の数の引数を作成-の値が
最後、残りの引数のパッケージに必要な2つの
モジュール(独立したファイル)に格納されている8.6関数
インポートモジュール全体(呼び出しにドット表記)。
- インポートモジュール名(エイリアスなど)
インポート固有の機能(ダイレクトコール):
- (別名としての)関数名からインポートモジュール名
すべてのインポート機能モジュール(推奨されません):
- モジュール名からのインポート*
作成機能のためのガイドライン8.7
記述名;のみ小文字とアンダースコア;文字列を文書化し、キーワード=デフォルトとの両側にスペースを必要としない
コード・シーケンス:(プログラムコメント+)import文の対象コード+
第9章クラス
指向オブジェクトプログラミング:ライティングクラス、一般的な動作を定義し、クラスベースのオブジェクト(インスタンス)を作成
9.1クラスの作成と使用
# 类名称首字母大写
# 实例名首字母小写
class Dog():
'''类的说明'''
# 方法:类中的函数
# 属性:类中以self为前缀的变量
# __init__特殊方法,实例化时自动运行;__默认方法前后均有两个下划线__
# self是指向实例本身的引用,自动传递,让实例访问类中的属性和方法(句点表示法)
def __init__(self, name):
self.name = name
def other_method(self):
# 创建实例
my_dog = Dog(“a”)
# 访问属性,无括号
my_dog.name
# 调用方法,有括号
my_dog.other_method()
9.2クラスとインスタンス
属性が指定する必要があり、初期値(0またはあってもよいヌル値、および変数の理由):
(1)引数の割り当てのインスタンスを渡すことを、__ initは__()括弧対応するパラメータ含まれている必要があります
(2)クラス内のデフォルトを指定します値は、__ __のinit()括弧なしする=直接self.attrパラメータに対応する値含ん
変更プロパティの値を:直接アクセス修飾を、改訂更新プロパティは、方法により調製
9.3継承
サブクラス=親(スーパークラス)+新しい属性とメソッド親と前に親ファイルと同様に、
class 父类名():
class 其他类():
class 子类名(父类名):
def __init__(self,形参):
# super()将父类与子类关联起来
super().__init__(形参)
self.新属性=初始值
# 将实例用作属性,便于将大类拆分为多个协同工作的小类
self.other_attri=其他类()
def 新方法(self):
# 重写方法
def 父类同名方法(self):
*クラスは、物理的なモデリング手法をシミュレートすることができていない正しいか間違っている、唯一の高及び効率の低いポイント
9.4クラス(インポート機能と同様に、モジュールに格納されている)を導入:
インポートモジュール全体(呼び出しにドット表記)。
- インポートモジュール名(エイリアスなど)
インポート特定のクラス(ダイレクトコール):
- クラス名からインポートモジュール名(クラス2名、......)
すべてのクラスのインポートモジュール(推奨されません):
- モジュール名からのインポート*
9.5 Pythonの標準ライブラリ:モジュールのセット
等:
collections.OrderedDict: -レコードキー値ペアのシーケンス(OrderedDict()呼び出しではなく、中括弧を使用して)
:乱数生成randomモジュールは、
数学数学モジュール
9.6クラスのコーディングスタイル
クラス名:OrderedDict(ハンプ命名)
インスタンス名/モジュール名:ordered_dictの
関数、クラス、モジュールは、必要な文書の文字列を
インポートするために、標準ライブラリモジュールを、その後、空の行+ カスタム・モジュール
第10章ファイルと例外
10.1(文字列を返します)ファイルからデータを読み込み、
# 使用任何文件前均需打开
# 使用with可在无需访问后自动关闭文件,比手动open()+close()方便
# open()返回的对象仅在with代码块内可用
# filename=当前目录下的文件名/相对or绝对文件路径(Windows系统需使用r+反斜杠\)
# 当字符串较长或较复杂时,往往先将其存储在一个变量中,再将变量传递给函数
with open(filename) as f:
data = f.read().rstrip() # read()返回包含全部内容的字符串,且末尾有空行
for line in f: # for循环逐行读取
lines = f.readlines() # 逐行读取并存入列表
10.2ファイル(文字列形式)を書くために
# mode包括:r读取,w写入,a附加,r+读写,省略=默认只读
with open(filename, mode) as f:
f.write(data) # 需手动添加换行符\n等设置格式
10.3異常(管理エラーの特別なカテゴリ)
使い方のtry-除く(-else)ブロックの処理を
try:
# 可能引发异常的代码
except 异常名:
# 处理异常的代码
# 或直接pass(什么也不做;或充当占位符,留待之后编写)
else:
# try没问题后才能执行的代码
異常:ZeroDivisionError、FileNotFoundErrorなど
利点:崩壊からプログラムは、実行して、より堅牢を続けることができ、制御シェアの度合いを、ユーザにエラーメッセージ
10.4格納データ(JSONモジュール)
JSONプログラミング言語、共通の間(JavaScriptオブジェクト表記)、
メモリ:json.dump(データ、f_obj)を
読み出す:json.load(f_obj)
* 再構成:コードハンドルのシリーズに関数の詳細については、コードの構造を簡素化簡単に、コードをより明確にし、理解しやすいように拡大を維持するために、
第11章テストコード(ユニットテストモジュール)
11.1テスト機能
ユニットテスト:検証機能の一の側面問題はないの
テストケース:ユニットテストのセット、機能を確認するために、さまざまな状況下で、問題ありません。完全なカバレッジが困難であり、一般のための重要な行動の筆記試験に
import unittest
from 模块名 import 需测试的函数名
class 最好与测试函数相关且包含Test的类名(unittest.TestCase):
# 必须test_开头,方法才将自动调用;长没事,描述清楚即可
def test_测试内容(self):
a = 需测试的函数()
# 断言方法之一
self.assertEqual(实际值a,期望值b)
# 运行测试
unittest.main()
出力結果:
(1)ドット/ E / F =合格/テスト・イニシエータ・エラー/原因アサーション障害テスト
(2)OK(FAILED)= ( UN)すべてのテストに合格
11.2テストクラス
テスト機能のクラスと同様の試験、クラスがテストメソッドの動作です
アサーションの6種類:
- assertEqual(a、b)は、assertNotEqual(B)
- いるassertTrue(x)は、assertFalse(X)
- assertIn(アイテム、リスト)、assertNotIn(アイテム、リスト)
)(セットアップを使用して一度だけ作成することができ、すべてのメソッドに;私たちは、各テストメソッドのテストクラスのインスタンスを作成する必要がPythonの最初のセットアップを実行します()し、オペレーティング方法TEST_を開始します
def setUp(self):
# 可一次性创建一系列实例并设置属性
self.实例名=类()
self.属性名=value