人家说合格的程序员要养成经常写博客的习惯。嗯。。。我正在培养中。日积月累,希望自己能坚持下去。
一、数字类型
1. 整数:与往常的C、C++等语言的不同是,python的整型没有范围约束。其余相同。
2. 浮点数:取值范围数量级
−10308
−
10
308
~
10308
10
308
,精度
10−6
10
−
6
。需要注意的是浮点数不能直接比较大小。可以借助round(x,d)函数,其中x是数值,d是截取的位数。python支持科学计数法,< a >e< b > 等价于
a∗10b
a
∗
10
b
3. 复数: python中可以直接使用虚数,虚部用j表示。
4. 操作符
操作符 | 含义 |
---|---|
// | 整除 |
% | 取余 |
** | 幂 (x**y=pow(x,y)) |
x op y | x += y 即x=x+y |
5. 运算函数
函数 | 说明 |
---|---|
abs(x) | 求绝对值 |
divmod(x,y) | 商余,同时输出商数和余数 |
pow(x,y[,z]) | 幂余,(x**y)%z |
round(x[,d]) | 四舍五入 |
max(),min() | 最大最小值函数 |
6.
##day_day_up.py
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)<37.78:
dayfactor+=0.001
print("工作日努力参数是:{:.3f}".format(dayfactor))
二、字符串
1. 编号:略
2. 切片:[M:N:K] #K是步长,K=-1时逆序
3. 函数
函数 | 说明 |
---|---|
len(x) | 求长度 |
str(x) | 转为字符串 |
hex(x)/oct(x) | 十六进制、八进制小写形式 |
chr(x) | 将x转为字符型表示,其中的x为Unicode编码 |
ord(x) | 将x用Unicode编码表示 |
print(内容,end=”“) | ,end=”“表示在同一行打印 |
4. 方法
方法 | 说明 |
---|---|
str.lower() | 全部变为小写 |
str.upper() | 全部变为大写 |
str.split(sep=None) | 返回一列表,由str根据sep被分隔的部分组成 |
str.count(sub) | 返回子串sub在str中出现的次数 |
str.replace(old,new) | 返回str副本,所有的old被new替换 |
str.center(width[,fillchar]) | 居中,width为总宽度,fillchar为填充的字符 |
str.strip(char) | 删除str首尾指定字符。若char为空格,常用于输入的清理。 |
str.lstrip(char) | 删除str开头指定字符。 |
str.rstrip(char) | 删除str结尾指定字符。 |
str.join(iter) | 以str为连接符,连接iter中每一个元素 |
说明:
(1)str.strip(” “)只是删除首位空格,若想删除一条句子中的所有的空格,可以用str.replace(” “,”“)
(2)关于join()
>>>iter=['Let','us','study','python']
>>>' '.join(iter)
Let us study python
5. 槽{}
格式:“{}”.format()
{<参数序号>:<格式控制标记>}
<参数序号> | : | <填充> | <对齐> | <宽度> | <,> | <.精度> | <类型> |
---|---|---|---|---|---|---|---|
从0开始 | 引导符号 | 单个字符 | < 左对齐 ^ 居中 > 右对齐 | 输出宽度 | 千位 分隔符 | 有个点 | 整数类型: b,c,d,o,x,X 浮点类型: e,E,f,% |
注意:在槽两端要加双引号,我每次都会忘。
>>>print("{1:*^10},{0:^5.2f}".format(3.1415926,"BIT"))
输出:
***BIT****,3.14
[Finished in 1.7s]
例题1:凯撒密码
描述
凯撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:
原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
对于原文字符P,其密文字符C满足如下条件:C=(P+3) mod 26
上述是凯撒密码的加密方法,解密方法反之,即:P=(C-3) mod 26
假设用户可能使用的输入仅包含小写字母a~z和空格,请编写一个程序,对输入字符串进行凯撒密码加密,直接输出结果,其中空格不用进行加密处理。使用input()获得输入。
输入
示例1: python is good
输出
示例1: sbwkrq lv jrrg
#Caesar_Cipher.py
code = input()
code = code.lower() #slove the problem of upper and lower both in the string, but don't need to think it in this item.
num = ord('a') #record the ascII of 'a'
for i in code:
if i is ' ':
print(' ',end="")
else:
index = ord(i) - num #record the indext of the letter in the alphabet list
password = chr(num + ((index + 3) % 26)) #tranform rule of Caesar Cipher
print(password,end="")
例题2:星号三角形
描述
读入一个整数N,N是奇数,输出由星号字符组成的等边三角形
要求
第1行1个星号,第2行3个星号,第3行5个星号,依次类推,最后一行共N的星号。
输入
示例1:3
输出
示例2:
*
***
#trangle.py
N=eval(input())
r=int(N/2)+1#计算行数
for i in range(r):
n=2*i+1
my_str = '*' * n
print(my_str.center(N))
注:字符串和居中和print槽的居中^要区分开来。
三、time模块
time库中的函数大致可以分为三类:
- 时间获取:time() ctime() gmtime()
- 时间格式化:strftime() strptime()
- 程序计时:sleep() perf_counter()
下面逐个细说。
1、
time() #获取当前时间,返回的格式是浮点型
ctime() #返回字符型的时间格式
gmtime() #返回计算机可处理的时间格式
测试代码如下:
import time
print("float time:",time.time())
print("char time:",time.ctime())
print("computer time:",time.gmtime())
'''
输出:
float time: 1525360585.78386
char time: Thu May 3 23:16:25 2018
computer time: time.struct_time(tm_year=2018, tm_mon=5, tm_mday=3,tm_hour=15, tm_min=16, tm_sec=25, tm_wday=3, tm_yday=123, tm_isdst=0)
'''
2、时间格式化
time.strftime(tpl,ts) #tpl:格式化模板字符串,用来定义输出效果
#ts:计算机内部时间类型变量
time.strptime(str,tpl) #与strf相反
栗子:
import time
t = time.gmtime()
print(time.strftime("%Y-%m-%d %H:%M:%S",t))
'''
输出:
2018-05-03 15:28:47
'''
3、程序计时
time.perf_counter()
#用于测量时间,返回一个CPU级别的精确时间计数值,时间单位为秒。由于计数值起点不确定,连续调用使用差值才有意义
time.sleep(s)
#让程序休眠s秒
import time
start = time.perf_counter()
for i in range(5):
dur = time.perf_counter() - start
print("{:.2f}s".format(dur))
time.sleep(0.1)
'''
输出:
0.00s
0.11s
0.22s
0.33s
0.44s
'''
为了方便起见,由>>>开头的为在shell中写的,具体操作方法是安装python后在开始处敲入idle回车。没有标>>>的为在IDE中完成的。
关于python的IDE,我装的比较全,使用的却很少。
最先装的是pycharm
后来装了anaconda,安装anaconda3时,会自动帮你把pycharm、spyder等都装上。因为个人考虑学习机器学习,装了anaconda以后也就方便了吧。
至于现在用的sublime text3,这个要好好安利一下。它是同事告诉我的。建议初学者可以使用这个,原因就是它很简单方便,不像pycharm一样写一小段还要新建项目,使用起来十分灵活。相比shell,方便保存。其实打开idle时,也可以选择文本编辑用于保存每次的代码,我开始就是这样做的,有两次都报错找不出原因,重启idle后再执行就可以了。同事告诉我是因为它不稳定,所以推荐了我sublime。emmmmm,目前觉得很好用。
更博有些慢,原因有二,一是我太懒,二是我效率太低。其实自己挖了很多坑,C++、机器学习、python都有,都存到草稿里了,写着写着,或者后来有点别的什么事就忘了更了。好习惯慢慢养吧。其实大多数是从自己笔记中摘来的,只有一篇关于matlab的是自己工作中各种踩雷后写的总结。写完其实也不一定能记住,但一定比不写好,而且方便以后复习。本来计划几天用很短时间把python二写完后开一篇C++的,这几日重学C++学到很多本科教材上从来没讲过的内容。但是写完这篇一看表已经零点了,第二天还要上班,emmmm,改天吧(又改天了)