記事ディレクトリ
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.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()形式