[Pythonプログラミング(3)]基本的なデータ型

1数値の種類と操作

1.1整数型

整数型は、数学における整数の概念と一致しており、正または負であり、値の範囲に制限はありません。

POW(x、y)の機能:計算X Y、事業者はどのくらいをカウントしたいです

>>> pow(2,100)
1267650600228229401496703205376

4つの16進数表現があります

  • 10進数:1010、99、-217
  • 0bまたは0Bで始まるバイナリ:0b010、-0B101
  • 8進数、0oまたは0Oで始まる:0o123、-0O456
  • 16進数、0xまたは0Xで始まる:0x9a、-0X89

1.2浮動小数点型

浮動小数点型は数学の実数の概念と一致しています

  • 浮動小数点値と小数精度の範囲には制限がありますが、ルーチン計算は無視できます
  • 値の範囲は約-10 307から10 308で、精度は10 -16です。

浮動小数点数の間の演算には、バグではなく不確定な仮数があります

>>> 0.1 + 0.3
0.4
>>> 0.1 + 0.2
0.30000000000000004

0.1 53ビットを使用して小数部を表現し、約10 -16の
バイナリ表現:0.000110011001100110011001100110011001100110011001100110011010
10進表現:0.1000000000000000055511151231257827021181583404541015625

小数の2進数表現は無限に近い可能性がありますが、完全に同じではありません。0.1+ 0.2の結果は無限に0.3に近いですが、仮数が存在する可能性があります。不確かな仮数は一般に10 -16発生するため、浮動小数点数の等しい判定は直接使用できません==

>>> 0.1 + 0.2 == 0.3
False
>>> round(0.1+0.2, 1) == 0.3
True

丸め(x、d):丸めx、dは小数点以下の桁数

浮動小数点数は、指数記号として文字eまたはEを使用し、10をベースとして、科学表記法で表すことができます。形式は次のとおりです。

<a> e <b>表示a * 10 b

例:4.3e-3値は0.0043、9.6E5値は960000.0

Python浮動小数点数については、次のことを知っておく必要があります。

  1. 値の範囲と精度は基本的に無制限
  2. 操作の仮数ラウンドが不確定です()
  3. 科学表記

1.3複合型

数学の複素数の概念と一致
z = 1.23e-4 + 5.6e + 89 j
z.realは実数部を取得し、z.imagは虚数部を取得します

1.4数値演算子

演算子と使用 説明文
x + y さらに、xとyの合計
x-y マイナス、xとyの差
x * y 乗算、xとyの積
x / y さらに、xとyの商10/3は3.3333333333333335になります。
x // y 整数除算、xとyの整数商は10 // 3であり、結果は3です。
強化されたオペレーターと使用 説明文
x op = y つまり、x = x op yです。ここで、opは二項演算子です。
x + = y、x-= y、x * = y、x / = y、
x // = y、x%= y、x ** = y

タイプ間で混合操作を実行できるため、「最も広い」タイプになります

  • 3つのタイプの間には、次第に「広がる」関係があります。
    整数->浮動小数点->複素数
  • 例:123 + 4.0 = 127.0(整数+浮動小数点=浮動小数点)

1.5数値演算機能

機能と使用 説明文
abs(x) 絶対値、x
abs(-10.01)の絶対値は10.01になります。
divmod(x、y) 商余剰(x // y、x%y)は、商と余りの
divmod(10、3 )を同時に出力し、結果は(3、1)
pow(x、y [、z]) 電力超過、(x ** y)%z、[]はパラメーターzを省略できることを意味します
pow(3、pow(3、99)、10000)結果は4587です
round(x [、d]) 丸め、dは小数点以下の桁数を保持するためのもので、デフォルト値は0
丸め(-10.123、2)結果は-10.12です。
max(x 1、x 2、…、x n 最大値、最大値を返すx 1、x 2、…、x n、nは
max(1、9、5、4、3)に限定されない結果は9
min(x 1、x 2、…、x n 最小値、x 1、x 2、…、x nの最小値を返します。nは
min(1、9、5、4、3)に限定されません。結果は1です。
int(x) xを整数に変換し、小数部分を破棄すると、
int(123.45)は123になり、int(“ 123”)は123になります。
float(x) xを浮動小数点数に変換し、小数部の浮動小数点数
(12)を増やします。結果は12.0、浮動小数点数( "1.23")の結果は1.23です。
複素数(x) xを複素数に変更し、複素数
(4)の虚数部を追加します。結果は4 + 0jです。

2例:上向きの力

質問1:1の能力‰

  • 年間365日、毎日1‰進捗状況、累積進捗状況
  • 年間365日、1日1‰、残りはどのくらいですか?
dayfactor = 0.001
dayup = pow(1 + dayfactor, 365)
daydown = pow(1 - dayfactor, 365)
print("向上:{:.2f},向下:{:.2f}".format(dayup, daydown))

演算結果:

向上:1.44,向下:0.69

質問2:就業日の力

  • 年365日、週5営業日、毎日1%の改善
  • 年365日、週2日の休み、毎日の減少の1%、この稼働日の力はどうですか?
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

質問3:平日の作業

  • 1日の1%と同じになるように、稼働日モデルでどの程度の努力を払わなければなりませんか?
  • 6月A:年365日、毎日1%の進歩、ノンストップ
  • 6月B:年365日、週5日勤務し、2日休みます。残りの日は1%減少します。どれだけの労力が必要ですか。

ここでは、0.01から始まり、毎回0.001ずつ増加する少しお試しの愚かな方法を採用しています。毎日、いつ1%進行するか、同じレベルのノンストップの進行状況を確認します。
ここに画像の説明を挿入

def dayUP(df):
    dayup = 1.0
    for i in range(365):
        if i%7 in [0, 6]:
            dayup *= (1 - 0.01)
        else:
            dayup *= (1 + df)
    return dayup;
dayfactor = 0.01
while dayUP(dayfactor) < 37.78:
    dayfactor += 0.001
print("工作日的努力参数是:{:.3f}".format(dayfactor))

運用実績

工作日的努力参数是:0.019

3文字列型と操作

3.1文字列型の表現

2種類の文字列で4種類の表現があります

  • 文字列は、単一引用符のペアまたは二重引用符のペアで表されます。
  • 3つの一重引用符または3つの二重引用符のペアで表され、複数行の文字列を表すことができます
"abc" 
或者
'abc'
或者
''' Python
语言 '''

注:3つの一重引用符または3つの二重引用符もコメントです。Pythonのコメントは基本的に文字列です
ここに画像の説明を挿入

  • インデックス:文字列<string> [M]
    “ abc” [0]またはTempStr [-1]の単一の文字を返します
  • スライス:文字列<string>内の文字サブストリングを返します[M:N]
    "abc" [1:3]またはTempStr [0:-1]

文字列スライシングの高度な使用法:[M:N:K]を使用して、ステップサイズに従って文字列をスライスします。

  • <文字列> [M:N]、M行方不明は最初までを意味、N行方不明は最後までを意味します
    "〇一二三四五六七八九十" [:3]結果は"〇一二"
  • <String> [M:N:K]、ステップKに従って文字列
    "〇一二三四五六七八九十"をスライスします[1:8:2]結果は"一三五七"
    "〇 1 2 3 4 5 6 7 7 90 90 "[::-1]結果は" 19 18 8 7 6 5 4 3 2 1〇 "

特殊文字:エスケープ文字\

  • 特定の意図エスケープ文字の発現は、
    「二重引用符があります(\」)「結果()ここでは、二重引用符です」
  • エスケープ文字はいくつかの組み合わせを形成し、印刷不可能な意味を表現します
    "\ b" back
    "\ n" line feed(カーソルは行の先頭に移動します)
    "\ r"キャリッジリターン(カーソルは行の先頭に移動します)

3.2文字列演算子

演算子と使用 説明文
x + y 2つの文字列xとyを連結する
n * xまたはx * n 文字列をx回n回コピー
x in s xがsの部分文字列の場合はTrueを返し、そうでない場合はFalseを返します

example:获取星期字符串

weekStr = "星期一星期二星期三星期四星期五星期六星期日"
weekid = eval(input("请输入星期数字(1-7):"))
pos = (weekid-1) * 3
print(weekStr[pos : pos + 3])

或者

weekStr = "一二三四五六日"
weekid = eval(input("请输入星期数字(1-7):"))
print("星期" + weekStr[weekid-1])

3.3 字符串处理函数

操作符及使用 描述
len(x) 长度,返回字符串 x 的长度
len(“一二三456”) 结果为 6
str(x) 任意类型 x 所对应的字符串形式
str(1.23) 结果为 “1.23”,str([1,2]) 结果为 “[1,2]”
hex(x) 或 oct(x) 整数 x 的十六进制或八进制小写形式字符串
hex(425) 结果为 “0x1a9” oct(425) 结果为 “0o651”
chr(u) x 为 Unicode 编码,返回其对应的字符
ord(x) x 为字符,返回其对应的 Unicode 编码

3.4 字符串处理函数

字符串处理函数 描述
str.lower() 或 str.upper() 返回字符串的副本,全部字符小写/大写
"AbCdEfGh".lower() 结果为 “abcdefgh”
str.split(sep=None) 返回一个列表,由 str 根据 sep 被分隔的部分组成
"A,B,C".split(",") 结果为 [‘A’,‘B’,‘C’]
str.count(sub) 返回子串 sub 在 str 中出现的次数
"an apple a day".count(“a”) 结果为 4
str.replace(old, new) 返回字符串 str 副本,所有 old 子串被替换为 new
"python".replace(“n”,“n123.io”) 结果为 “python123.io”
str.center(width[,fillchar]) 字符串 str 根据宽度 width 居中,fillchar 可选
"python".center(20,"=") 结果为 ‘=======\python=======’
str.strip(chars) 从 str 中去掉在其左侧和右侧 chars 中列出的字符
"= python= “.strip(” =np") 结果为 “ytho”
str.join(iter) 在 iter 变量除最后元素外每个元素后增加一个 str
",".join(“12345”) 结果为"1,2,3,4,5" #主要用于字符串分隔等

3.5 字符串类型的格式化

格式化是对字符串进行格式表达的方式,字符串格式化使用 .format()方法,用法如下:

  • <模板字符串>.format(<逗号分隔的参数>)

ここに画像の説明を挿入
槽内部对格式化的配置方式
{ <参数序号> : <格式控制标记>}

: <填充> <对齐> <宽度> <,> <.精度> <类型>
引导符号 用于填充的单个字符 < 左对齐
> 右对齐
^ 居中对齐
槽设定的输出宽度 数字的千分隔符 浮点数小数精度或
字符串最大输出长度
整数类型
b, c, d, o, x, X
浮点数类型
e, E, f, %

ここに画像の説明を挿入
ここに画像の説明を挿入

4 time 库的使用

time 库是 Python 中处理时间的标准库,包括三类函数

  • 时间获取:time(),ctime(),gmtime()
  • 时间格式化:strftime(),strptime()
  • 程序计时:sleep(),perf_counter()

import time
time.()

4.1 时间获取

ここに画像の説明を挿入

4.2 时间格式化

将时间以合理的方式展示出来,类似字符串格式化,需要有展示模板,展示模板由特定的格式化控制符组成

函数 描述
strftime(tpl, ts) tpl是格式化模板字符串,用来定义输出效果
ts是计算机内部时间类型变量
>>>t = time.gmtime()
>>>time.strftime("%Y-%m-%d %H:%M:%S",t)
‘2018-01-26 12:55:20’
格式化字符串 日期/时间说明 值范围和实例
%Y 年份 0000~9999,例如:1900
%m 月份 01~12,例如:10
%B 月份名称 January~December,例如:April
%b 月份名称缩写 Jan~Dec,例如:Apr
%d 日期 01~31,例如:25
%A 星期 Monday~Sunday,例如:Wednesday
%a 星期缩写 Mon~Sun,例如:Wed
%H 小时(24h制) 00~23,例如:12
%I 小时(12h制) 01~12,例如:7
%p 上/下午 AM, PM,例如:PM
%M 分钟 00~59,例如:26
%S 00~59,例如:26
函数 描述
strptime(str, tpl) str是字符串形式的时间值
tpl是格式化模板字符串,用来定义输入效果
>>>timeStr = ‘2018-01-26 12:55:20’
>>>time.strptime(timeStr, “%Y-%m-%d %H:%M:%S”)
time.struct_time(tm_year=2018, tm_mon=1,
tm_mday=26, tm_hour=4, tm_min=11, tm_sec=16,
tm_wday=4, tm_yday=26, tm_isdst=0)

4.3 程序计时

函数 描述
perf_counter() 返回一个CPU级别的精确时间计数值,单位为秒
由于这个计数值起点不确定,连续调用差值才有意义
>>>start = time.perf_counter()
318.66599499718114
>>>end - start
22.724523540384666
sleep(s) s拟休眠的时间,单位是秒,可以是浮点数
>>>def wait():
time.sleep(3.3)
>>>wait() #程序将等待3.3秒后再退出

5 实例: 文本进度条

需求分析:采用字符串方式打印可以动态变化的文本进度条,进度条需要能在一行中逐渐变化

行を段階的に変更するには、動的リフレッシュが必要です。改行は許可されません。前の文字を上書きした後に印刷された文字。印刷後、カーソルは前の位置に戻ります。ここでは、\ rが使用されます。

import time
scale = 50
print("执行开始".center(scale//2, "-"))
start = time.perf_counter()
for i in range(scale+1):
    a = '*' * i
    b = '.' * (scale - i)
    c = (i / scale) * 100
    dur = time.perf_counter() - start
    #print() 语句打印完一行自动换行,end=''可以不换行
    print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c, a, b, dur), end = '')
    time.sleep(0.1)
print("\n" + "执行结束".center(scale//2, '-'))

演算結果:
ここに画像の説明を挿入

6まとめ

1.数値型と演算

  • 整数型の無限範囲と4つの16進表現
  • 浮動小数点型、リトルエンディアン、および科学的表記のほぼ無限の範囲
  • +、-、*、/、//、%、**、バイナリ拡張代入演算子
  • abs()、divmod()、pow()、round()、max()、min()
  • int()、float()、complex()

2.文字列型と操作

  • 順方向に増加するシーケンス番号、逆方向に減少するシーケンス番号、<string> [M:N:K]
  • +、*、in、len()、str()、hex()、oct()、ord()、chr()
  • .lower()、. upper()、. split()、. count()、. replace()
  • .center()、. strip()、. join()、. format()形式
298件のオリジナル記事を公開 181 件を賞賛 100,000回以上の閲覧

おすすめ

転載: blog.csdn.net/happyjacob/article/details/105162277