嵩天先生python基礎課程ノート-3

40742 ワード

文書ディレクトリ
  • 第3週基本データ型
  • 3.1データ型および操作
  • 3.2例3:日々向上する力
  • 3.3文字列タイプおよびその操作
  • 3.4モジュール2:timeライブラリ使用
  • 3.5例4:テキスト進捗バー
  • 3.1データ型および操作
  • 3.2例3:日々向上する力
  • 3.3文字列タイプおよびその操作
  • 3.4モジュール2:timeライブラリ使用
  • 3.5例4:テキスト進捗バー
  • 平方根フォーマット
  • 文字列セグメントの組合せ
  • 第3週基本データ型
    3.1データ型と操作
    3.2例3:日々向上する力
    3.3文字列タイプとその操作
    3.4モジュール2:timeライブラリ使用
    3.5例4:テキスト進捗バー
    3.1データ型と操作
    整数タイプ:数学の整数の概念と一致し、正負可能で、値の範囲の制限がありません.
  • pow(x y)関数:x y x^y xyを計算し、どれだけ大きいかを計算したい
  • 4進数表示:
  • 十進法:1010,99,-217等
  • バイナリ、0 bまたは0 Bで始まる:0 b 010,-0 B 10
  • 8進法、00または0 Oで始まる:00123,-00456
  • 16進数、0 xまたは0 Xで始まる:0 x 9 a 2,-0 X 89
  • pow(2,10) #pow  
    
    1024
    

    浮動小数点数:小数点の数を持ち、数学の概念とずっと、範囲−1 0 308−10^{308}−10308~1 0 308 10^{308}10308、精度1 0−16 10^{−16}10−16
  • 浮動小数点数の端数に不確定端数が存在し、bug
  • ではない
  • round(x,d):xを四捨五入し、dは小数切り取りビット数浮動小数点数間演算及び比較用round 0関数補助
  • 浮動小数点数は、アルファベットeまたはEをべき乗とする記号を科学的カウント法で表すことができ、10を基数とし、a*10 bを以下のように表す.例えば、4.3 e-3値が000439.6 E 5値が96000.0
  • 0.1+0.2  #     
    
    0.30000000000000004
    
    0.1+0.2==0.3
    
    False
    
    round(0.1+0.2,3)==0.3
    
    True
    
    7.8e-1
    
    0.78
    

    複数タイプ:数学の複数と一致
    z=1.23e-4+5.6e+89j
    #z.imag
    z.real
    
    0.000123
    

    数値演算オペレータ
    +,-,*,/,//:加算,減算,乗算,除算,整数除算
  • +x:x自体
  • -y:yの負の値
  • x%y:y対x取余
  • x**y:べき乗演算
  • エンハンスメント演算子:x op=y、すなわちx=x op y
  • 4**0.5
    
    2.0
    
    x=2
    x*=3
    print(x)
    
    6
    

    数値演算関数:関数として数値演算を提供する機能
    abs(-10.00001) #     abs(x)
    
    10.00001
    
    divmod(10,3) #  ,(x//y,x%y)
    
    (3, 1)
    
    pow(4,pow(2,1),10) #  ,(x*y)%z,[]    z   
    
    6
    
    round(10.12345,3) #    ,d       ,    0
    
    10.123
    
    max(1,3,5,6,7,8,9,10,0b11111111111111111111111111111110101010) #   
    
    274877906858
    
    min(1,3,4,5,6,7,87,8,8,-0x123a27365) #   
    
    -4892816229
    
    int(123.3456) #      ,      
    
    123
    
    float(10) #       ,      
    
    10.0
    
    complex(-10e2) #      ,      
    
    (-1080+0j)
    

    3.2例3:日々向上する力
    質問1:千分の一の暦の力
  • 毎日0.001進歩して、1年累計でいくら進歩しますか?
  • 毎日0.001退歩して、1年の累計退歩はいくらですか?
  • #DayDayUpQ1
    dayup = pow(1.001,365)
    daydown = pow(0.999,365)
    print('  :{:.2f},  :{:.2f}'.format(dayup,daydown))
    
      :1.44,  :0.69
    

    質問2:1パーセントまたは5パーセントに変更コードに変数を追加し、変数を変更すればよい
    #DayDayUpQ2
    dayfactor = 0.01
    dayup = pow(1+dayfactor,365)
    daydown = pow(1-dayfactor,365)
    print('  :{:.2f},  :{:.2f}'.format(dayup,daydown))
    
      :37.78,  :0.03
    

    質問3:5営業日で1%、2営業日で1%後退
    #DayDayUpQ3
    dayup = 1.0
    dayfactor = 0.01
    for i in range(365):
        if i % 7 in [6,0]:
            dayup *= (1 - dayfactor)
        else:
            dayup *= (1 + dayfactor)
    print('  :{:.2f}'.format(dayup))
    
      :4.63
    

    質問4:平日の努力の度合いがどれくらいの場合、毎日の努力の1%と同じ(2日休んで1%下がっても変わらない)
    #DayDayUpQ4
    def dayUp(df):
        dayup = 1
        for i in range(365):
            if i % 7 in [6,0]:
                dayup = dayup*(1 - 0.01)
            else:
                dayup = dayup*(1 + df)
        return dayup
    
    dayfactor = 0.01
    while dayUp(dayfactor) < round(pow(1.01,365),2):
        dayfactor += 0.001
     
    print('        :{:.3f}'.format(dayfactor))
    
            :0.019
    

    3.3文字列タイプとその操作
    0文字または複数の文字からなる順序付き文字列
  • 文字列は、1対の単一引用符または1対の二重引用符で文字列が文字の秩序化されたシーケンスであることを示し、その中の文字をインデックスすることができる
  • 文字列は2種類の計4種類の表現方法で1対の単引用符または二重引用符で表され、単一行文字列のみが1対の三単引用符または三重引用符で表され、複数行文字列
  • を表すことができる.
  • 文字列に二重引用符または一重引用符を含める場合は?どの引用符が必要かは、その引用符を文字列のタグとしない
  • 順方向の増加(0から)、逆方向の減少(-1から)
  • が同時に存在する
  • インデックス:文字列内の単一文字を返す:[M]スライス:文字列内の文字列のサブ列を返す:[M:N]、M欠落は先頭まで、N欠落は全培尾M:N:Kを表し、ステップKに基づいて文字列スライス
  • エスケープ:文字の本意を表すエスケープはいくつかの組み合わせを形成して、いくつかの印刷できない意味を表すことができます:"b"は後退して、"改行(カーソルは下りの頭に移動します)、"r"は車に戻ります(カーソルは本行の頭に移動します)
  • 0文字または複数の文字からなる順序付き文字列
  • x+y:2つの文字列n*xまたはx*nを接続する:n次文字列x x in sをコピーする:xがsのサブ列であればTrueを返し、そうでなければFalse
  • を返す
    #WeekNamePrintV1
    weekStr = '                     '
    weekId = eval(input('       (1-7):'))
    pos = (weekId - 1)*3
    print(weekStr[pos:pos+3])
    
    
       
    
    #WeekNamePrintV1
    weekStr = '       '
    weekId = eval(input('       (1-7):'))
    print('  '+weekStr[weekId-1])
    
       
    

    文字列処理関数
    len('1yi ') #     
    
    4
    
    str(1234) #          
    
    '1234'
    
    hex(234) #     16  
    
    '0xea'
    
    oct(234) #     8  
    
    '0o352'
    
    chr(1234) #Unicode          
    
    'Ӓ'
    
    ord('A') #  ,       Unicode  
    
    65
    
    #      
    for i in range (12):
        print(chr(9800+i),end = '')
    
    ♈♉♊♋♌♍♎♏♐♑♒♓
    

    メソッド「プログラミングでは固有名詞
  • 「メソッド」とは、.()スタイルの関数()メソッド自体も関数であるが、に関連し、.()スタイル使用文字列および変数もであり、いくつかのメソッド
  • が存在する.
    'ABDHSUwwbdja'.lower() #       
    
    'abdhsuwwbdja'
    
    'ASJIJIHDqhsudhausbc'.upper() #      
    
    'ASJIJIHDQHSUDHAUSBC'
    
    'A.split(') #                  
    
    ['A', 'BAB', 'G']
    
    'an apple a day'.count('a') #           
    
    4
    
    'python'.replace('n','n123.io') #          
    
    'python123.io'
    
    'python'.center(20,'~') #  20    ~      
    
    '~~~~~~~python~~~~~~~'
    
    '= python ='.strip(' =np') #         
    
    'ytho'
    
    '-'.join('   ?') #       
    
    ' - - -?'
    

    文字列タイプの書式設定
  • スロット:文字列用のプレースホルダ
  • '{}:   {} CPU   :{}%'.format('2018-10-10','C',pow(2,5)) #   +format  
    
    '2018-10-10:   C CPU   :32%'
    
    '{:=^50}'.format('python') #=  ,    ,  50
    
    '======================python======================'
    
    '{:,.2f}'.format(12345.678947) #    ,   2,     
    
    '12,345.68'
    

    3.4モジュール2:timeライブラリ使用
    timeライブラリ:Pythonの処理時間の標準ライブラリコンピュータ時間の表現はシステム時間を取得し、出力機能をフォーマットすることを提供し、システムレベルの正確な計時機能を提供し、プログラム性能分析に用いる
  • 3種類の関数を含む
  • 時間取得:time(),ctime(),gmtime()
  • 時間フォーマット:strftime(),strptime()
  • プログラムタイミング:sleep(),perf_time()
  • import time as t
    
    #    
    t.time() #1970/1/1 0.0.0      ,       
    
    1583509138.1986494
    
    t.ctime() #              ,     
    
    'Fri Mar  6 23:38:53 2020'
    
    t.gmtime() #      ,              
    
    time.struct_time(tm_year=2020, tm_mon=3, tm_mday=6, tm_hour=15, tm_min=39, tm_sec=3, tm_wday=4, tm_yday=66, tm_isdst=0)
    
    #     :        ,       ,                
    
    Time = t.gmtime() #          
    t.strftime('%Y-%m-%B-%b-%d  %H(%I):%M:%S  %A-%a  %p',Time) #               ,%B           ,     
    
    '2020-03-March-Mar-06  15(03):41:40  Friday-Fri  PM'
    
    #                 
    timeStr = '2020-03-06  23:46:34'
    t.strptime(timeStr,'%Y-%m-%d  %H:%M:%S')
    
    time.struct_time(tm_year=2020, tm_mon=3, tm_mday=6, tm_hour=23, tm_min=46, tm_sec=34, tm_wday=4, tm_yday=66, tm_isdst=-1)
    
    #    :              ,          
    start = t.perf_counter()#    ,      
    end = t.perf_counter()
    end - start
    
    2.6000000161729986e-05
    
    def wait():
        t.sleep(3.3)
    wait()#    3.3s   
    

    3.5例4:テキスト進捗バー
    #TextProBarV1
    import time as t #   
    scale = 10
    print('------    ------') #    
    for i in range(scale+1): #    ,               
        a = "*"*i
        b = '.'*(scale - i) #                   
        c = (i/scale)*100
        print('{:^3.0f}%[{}->{}]'.format(c,a,b))
        t.sleep(0.3)
    print('-------    ------') #    
    
    ------    ------
     0 %[->..........]
    10 %[*->.........]
    20 %[**->........]
    30 %[***->.......]
    40 %[****->......]
    50 %[*****->.....]
    60 %[******->....]
    70 %[*******->...]
    80 %[********->..]
    90 %[*********->.]
    100%[**********->]
    -------    ------
    
    #TextProBarV1     
    #                    
    #    print  ,       
    import time as t
    for i in range(101):
        print('\r{:3}%'.format(i),end = '')
        t.sleep(0.1)
    
    100%
    
    #TextProBarV3
    import time as t #   
    import math as m 
    scale = 50
    print('    '.center(scale//2,'-')) #    
    start = t.perf_counter()
    for i in range(scale+1): #    ,               
        a = "*"*i
        b = '.'*(scale - i) #                   
        #c = (i/scale)*100  #      
        c = round((m.sin(i/scale*0.5*(m.pi))),3)*100
        dur = t.perf_counter()-start
        print('\r{:^3.0f}%[{}->{}] [{:.2f}s]'.format(c,a,b,dur),end = '')
        t.sleep(0.1)
    print('
    '
    +' '.center(scale//2,'-')) #
    -----------    ----------
    100%[**************************************************->] [5.03s]
    -----------    ----------
    
  • プログレスバーはヒューマン・マシン・インタラクションの優れた表現形式
  • val = pow(2,1000)
    len(str(val))
    
    302
    
    s='PYTHON'
    print("{0:3}".format(s))
    
    PYTHON
    

    平方根の書式設定
    ユーザ入力の1つの整数aを取得し、aの平方根を計算し、小数点後3位を保持し、出力を印刷する.‪‪‪8234;8234;8234;8238;‪‪8234;‪‪‪‪‪8234;8234;‪8235;‫\8234;;;;;\8234;;;;;;‪;;;‪‪;‪‪;‪‪‫;‫;;;8235;;;;;;;;8235;;;;;;;;;;;\8235;;;;;;ジルコニア‪‬‪‬‪‬‪‬‮‬‭‬‪‬
    出力結果は幅30文字、右揃え出力、余分な文字はプラス記号(+)充填.‮‪‪8234;8234;‪‪‪8234;8234;8234;;8234;;‪8234;;8234;;8234;;8234;;‪‪;8234;;;8234;;;8234;;;8234;;;‪;;;;‪;;;8234;;;;;8234‪;;;;;;;;;‪;;;;;;;;‪;;;;;;;;\\ジルコニア
    結果が30文字を超える場合は、結果の幅に準じます.
    zhengshu = input()
    print('{:+>30.3f}'.format(pow(eval(zhengshu),0.5)))
    
    ++++++++++++++++++0.000+3.162j
    

    文字列セグメントの組合せ
    入力された文字列sを取得し、sを文字マイナス(-)で分割し、最初と最後の2つのセグメントをプラス記号(+)で組み合わせて出力します.
    zifu = input()
    ZiFu = zifu.split('-')
    print('{}+{}'.format(ZiFu[0],ZiFu[-1])) 
    
    Alice+Flurry