ホームページ > バックエンド開発 > Python チュートリアル > Pythonプログラミング開発の実務経験とスキルを公開

Pythonプログラミング開発の実務経験とスキルを公開

coldplay.xixi
リリース: 2021-03-23 11:27:25
転載
2971 人が閲覧しました

Pythonプログラミング開発の実務経験とスキルを公開

#記事ディレクトリ

#1. 小数点は指定された小数点以下の桁に保持する必要があります
  • 1. %f メソッド
    • 2.format 関数
    • 3.round() function
    • 4.直接切り捨て
    2. 判定 変数のデータ型
  • 1.type():
    • 2.isinstance()
    • 3.__class__.__name__attribute
    3. Python のクラス メソッド (@classmethod)
  • 4. str.format とタブ文字\t中国語の配置を設定
  • 5. Datetime モジュール timedelta の使用法クラスの
  • #6. スローされた例外の特定の情報を取得します
  • #7. BeautifulSoup ライブラリを使用して、文字列
  • ## 内の HTML タグを削除します#(無料学習の推奨:

Python ビデオ チュートリアル)1. 小数点は指定された小数点以下の桁に保持する必要があります

1.%f メソッド

f = 1.23456f1 = '%.4f' % f
f2 = '%.2f' % fprint(f1,type(f1))print(f2,type(f2))
ログイン後にコピー

Print

1.2346 <class &#39;str&#39;>1.23 <class &#39;str&#39;>
ログイン後にコピー
ログイン後にコピー
このメソッドは丸めますが、浮動小数点数を変換することは簡単にわかります。ポイント型を文字列値に変換すると、元の値ではなくなります。

2.format function

f = 1.23456f1 = format(f,'.4f')f2 = format(f,'.2f')print(f1,type(f1))print(f2,type(f2))
ログイン後にコピー

Print

1.2346 <class &#39;str&#39;>1.23 <class &#39;str&#39;>
ログイン後にコピー
ログイン後にコピー
同様に、このメソッドも丸められますが、浮動小数点型は文字列値に変換されます。はプリミティブな数値ではなくなりました。

3.round() function

a = 1.23456b = 2.355c = 3.5d = 2.5a1 = round(a, 3)b1 = round(b, 2)c1 = round(c)d1 = round(d)print(a1,type(a1))print(b1,type(b1))print(c1,type(c1))print(d1,type(d1))
ログイン後にコピー

Print

1.235 <class &#39;float&#39;>2.35 <class &#39;float&#39;>4 <class &#39;int&#39;>2 <class &#39;int&#39;>
ログイン後にコピー
round() 関数が最終的に数値 (浮動小数点数) を取得していることがわかります。 point 型や integer 型など)、「四捨五入」と「四捨五入」の規則は必ずしも当てはまりません。

(1)round(x,n) 関数では、桁上げか四捨五入かは n 桁と n に依存します。 10 進数 1 桁 値

(2) n の 1 桁の数が 5 の場合のみ混乱しやすいです。n が偶数の場合、n の 1 桁の数は 5 となり、たとえば次のようにキャリーされます。 Round (1.23456, 3) は最終的に 1.235

(3) n が奇数の場合、n 1 ビットは数値 5 となり、round (2.355, 2) などの桁上げはありません。最終値は次のようになります。 2.35

(4) n が 0 の場合、つまり n が未入力の場合、最終結果は上記とは逆になります。つまり、整数部分が偶数の場合、小数点 5 は無効になります。たとえば、ラウンド(2.5)が 2 になります)。
(5) 整数部が奇数の場合、小数点以下は5に切り上げます。 (丸め (3.5) は 4 になります)


4.

a = int(1.23456 * 1000) / 1000print(a)
ログイン後にコピー

を直接切り捨てて 1.234

を出力する この方法は単純かつ粗雑で、 direct 5 より大きいかどうかに関係なく、次のものを削除します。

2. 変数のデータ型を決定します

1.type():

a = 1.23print(type(a))
ログイン後にコピー

Print <クラス 'float'>

2.isinstance()

プロトタイプは isinstance(x, A_tuple),

a = 1.23tp = isinstance(a,float)print(tp)
ログイン後にコピー

Print です真実 ###。

3.class.__name__ 属性

変数の

__class__.__name__ 属性 (これも type()#) を使用します。 ## メソッドの本質:

num = 1.23print(num.__class__.__name__)
ログイン後にコピー

Print: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">float</pre><div class="contentsignin">ログイン後にコピー</div></div>3. Python のクラスメソッド (@classmethod)

オブジェクトを実行するときPython での指向プログラミングでは、多くの場合、クラス内のメソッドではない

classmethod

クラス メソッドを使用する必要があります。 クラス メソッドも実践的なテクニックであり、「クラス メソッドはクラス テンプレートを記憶に残るものにする」と簡単に説明できます。 クラス テンプレートは、私たちが定義するクラスです。通常の状況では、クラス メソッドを使用してクラスをインスタンス化しない場合、クラス自体にはメモリがありません。静的テンプレートが複数回適用されたときだけです。各インスタンス化の後にクラスにメモリを記録させたい場合は、多くの操作に役立ちます。

class Man:
    id = 0 # 类变量
    def __init__(self, name):
        self.name = name
        self.id = self.id_number()
 
    @classmethod
    def id_number(cls):
        cls.id += 1
        return cls.id
 a = Man('A')print(a.id)b = Man('B')print(b.id)
ログイン後にコピー

Print<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">12</pre><div class="contentsignin">ログイン後にコピー</div></div>Man クラスを 2 回インスタンス化します。各インスタンスの ID は異なります。これは、クラス メソッドに依存することによって実現されます。まず、
@classmethod
を使用してクラス メソッドを記述し、次に「cls」を使用してこのクラスを表します。クラスメソッドによるクラス属性の処理を記憶します。

クラスメソッドで処理される変数はクラス変数である必要があることに注意してください。 self を使用してクラス メソッド内のインスタンス変数をアドレス指定することはできないため、上記の「id=0」に示すように、クラス変数を説明の先頭に置く必要があります。クラス変数は自身でアクセスできるため、クラス変数を定義した後、_init_関数内に再度クラス変数を記述する必要はありません。したがって、上記のコードでは self.id は必ずしも必要ではありません。

4. str.format とタブ文字 \t中国語の配置を設定します

str.format は文字列

{:{:>x} は右揃え、{:^x} は中央揃えを意味します)、x 桁未満は自動的に埋められます (デフォルトは埋め込みただし、中国語の文字はあまりサポートされていないため、中国語の文字列が複数行ある場合は位置合わせが行われない現象が発生します。文字列の長さを考慮し、計算する前に中国語の文字列をエンコードする必要があります。 。

#name是包含中文的字符串,22是整个字符串一行的总长度,一般要顾及测试才能得到,\t后的x是一标记字符,可换为别的所需的字符串print('[{string:<{len}}\tx&#39;.format(string=string+&#39;]&#39;,len=22-len(string.encode(&#39;GBK&#39;))+len(string)))
ログイン後にコピー
詳細については、https://blog.csdn.net/excaliburrr/article/details/767944515. datetime モジュールでの timedelta クラスの使用## を参照してください。 #<p>timedelta对象表示两个不同时间之间的差值, 这个差值的单位可以是:天、秒、微秒、毫秒、分钟、小时、周。<br/> 如果使用time模块对时间进行算术运算,只能将字符串格式的时间和struct_time格式的时间对象先转换为时间戳格式,然后对该时间戳加上或减去n秒,最后再转换回struct_time格式或字符串格式,这显然很不方便。而datetime模块提供的timedelta类可以让我们很方面的对<code>datetime.date, datetime.timedatetime.datetime对象做算术运算,且两个时间之间的差值单位也更加容易控制。
datetime.timedelta类的定义:

class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, hours=0, weeks=0)
ログイン後にコピー

所有参数都是默认参数,因此都是可选参数。参数的值可以是整数或浮点数,也可以是正数或负数。内部值存储days、seconds 和 microseconds,其他所有参数都将被转换成这3个单位:

  • 1毫秒转换为1000微秒
  • 1分钟转换为60秒
  • 1小时转换为3600秒
  • 1周转换为7天

然后对这3个值进行标准化,使得它们的表示是唯一的:

  • microseconds : [0, 999999]
  • seconds : [0, 86399]
  • days : [-999999999, 999999999]

类属性

类属性名称描述
timedelta.mintimedelta(-999999999)
timedelta.maxtimedelta(days=999999999, hours=23, minutes=59, seconds=59, microseconds=999999)
timedelta.resolutiontimedelta(microseconds=1)

实例方法和属性

实例方法/属性名称描述
td.days天 [-999999999, 999999999]
td.seconds秒 [0, 86399]
td.microseconds微秒 [0, 999999]
td.total_seconds()时间差中包含的总秒数,等价于: td / timedelta(seconds=1)
方法/属性描述
datetime.datetime.now()返回当前本地时间(datetime.datetime对象实例)
datetime.datetime.fromtimestamp(timestamp)返回指定时间戳对应的时间(datetime.datetime对象实例)
datetime.timedelta()返回一个时间间隔对象,可以直接与datetime.datetime对象做加减操作
>>> import datetime>>>>>> datetime.timedelta(365).total_seconds() # 一年包含的总秒数31536000.0>>> dt = datetime.datetime.now()>>> dt + datetime.timedelta(3) # 3天后datetime.datetime(2020, 1, 22, 11, 17, 0, 214877)>>> dt + datetime.timedelta(-3) # 3天前datetime.datetime(2020, 1, 16, 11, 17, 0, 214877)>>> dt + datetime.timedelta(hours=3) # 3小时后datetime.datetime(2020, 1, 19, 14, 17, 0, 214877)>>> dt + datetime.timedelta(hours=-3) # 3小时前datetime.datetime(2020, 1, 19, 8, 17, 0, 214877)>>> dt + datetime.timedelta(hours=3, seconds=30) # 3小时30秒后 datetime.datetime(2020, 1, 19, 14, 17, 30, 214877)
ログイン後にコピー

更多关于Python对日期、时间的处理可参考https://www.jb51.net/article/105840.htm。

六、获取抛出的异常具体信息

很多时候,在Python运行抛出异常并接收到之后需要显示异常的具体信息,包括异常内容、异常所在的行数和异常所在的Python文件等等,分别使用args[0]__traceback__.tb_lineno__traceback__.tb_frame.f_globals["__file__"]属性即可,示意如下:

def get_exception_info():
    try:
        s = 2 / 0
    except Exception as e:
        print('异常内容:', e.args[0])
        print('异常行数:', e.__traceback__.tb_lineno)
        print('异常文件:', e.__traceback__.tb_frame.f_globals["__file__"])get_exception_info()
ログイン後にコピー

打印:

异常内容: pision by zero
异常行数: 8异常文件: XXX/test.py
ログイン後にコピー

七、使用BeautifulSoup库去掉字符串中的HTML标签

有时候,字符串中含有HTML标签,如

text = """<p>
<h1>Title</h1>
<p>A long text........ </p>
<a href=""> a link </a>
</p>"""
ログイン後にコピー

需要得到'\nTitle\nA long text........ \n a link \n',可以使用正则表达式匹配,但是稍嫌麻烦,此时可以直接使用BeautifulSoup库进行转化,更加简单,如下:

from bs4 import BeautifulSoup

text = """<p>
<h1>Title</h1>
<p>A long text........ </p>
<a href=""> a link </a>
</p>"""clean_text = BeautifulSoup(text, "lxml").textprint(clean_text)
ログイン後にコピー

打印:

Title
A long text........ 
 a link
ログイン後にコピー

显然,此时已经去掉了字符串中的HTML标签。

相关免费学习推荐:python教程(视频)

以上がPythonプログラミング開発の実務経験とスキルを公開の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート