XInCheng
一万年太久,只争朝夕
XInCheng
Python初学笔记_01

这是我在学习Python过程中的一些小知识的汇合,与之同步(可能滞后一些)进行的是Python_scrapy的学习,当然,学校也开设了C语言课程,我可能将自己容易搞混的东西做一个对比与总结 :shock:

先推荐一个在手机上对新手了解和复习知识点很有用的app Learn Python

          

这是一个系列的软件,包括但不限于python、java、html、c++这些语言,这个软件会让你对python语言有一个快速的了解,在每个新知识点的介绍后面还有小问题,还有Code playground里大神的代码让你领略 ;-)

保留字

Python语言的保留字:

C语言的关键字:

 

Python的格式化输出

在python中,格式化输出是用” % “实现的,下面是一些例子:

%?(占位符)是用后面的内容替换前面的内容,如果有很多内容则可以用括号将它们括起来,下面是常见的占位符:

%s    字符串 (采用str()的显示)
%r    字符串 (采用repr()的显示)
%c    单个字符
%b    二进制整数
%d    十进制整数
%o    八进制整数
%x    十六进制整数
%f    浮点数
%F    浮点数,与上相同
%%    字符”%”

还有更多Python字符串格式化 (%占位操作符)的操作在这里有更详细的介绍

C语言的格式化输出我就不做比较了,与Python的大致相同

下面来看一下中国大学mooc上的一个例子

用Python编写一个程序进行摄氏度华氏度温度体系的转换,输入输出格式设计:

标识放在温度最后,F表示华氏度,C表示摄氏度,82F表示华氏82度,28C表示摄氏28度

问题分析

设计算法 根据华氏和摄氏温度定义,利用转换公式如下:

C = ( F – 32 ) / 1.8

F = C * 1.8 + 32

程序如下:

turtle库

蟒蛇绘制:

turtle中有绝对坐标系与相对坐标系之分

绝对坐标系:

例如我们运行如下代码,会得到一个图案:

相对坐标系:

例如下列程序:

颜色控制:

基本数字类型

十进制:1010,99,-217

二进制:以0b或0B开头:0b010,-0B101

八进制:以0o或0O开头:0o123,-0O456

十六进制:以0x或0X开头:0x9a,-0X89

python的整数类型以及浮点数精度都是很高的,可以用函数来确定其精度以防不确定尾数对计算的影响:

python还给了复数类型:

不同类型数进行混合运算,结果往最宽的方向走

 

mooc中有这样一个问题:

-B工作日模式要努力 到什么水平,才能与A每天1% 一样?
-A君: 一年365 天,每天进步 1% ,不停歇
-B君: 一年365 天,每周工作5天休息2天,休息日下降 1%

字符串

表示方法:

由一对单引号或双引号或三引号(可以用来多行注释)表示:

字符串的使用:

-索引:返回字符串中的单个字符    <字符串>[M]

“这是一句话”[0]  或者  TempStr[-1]

-切片:返回字符串中一段字符子串

<字符串>[M:N]

“这是一句话”[0:3]  或者  TempStr[-0:1]

<字符串>[M:N:K]

“〇一二三四五六七八九十 “[1:8:2] 结果是 “一三五七 ”

转义符\

-转义符表达特定字符本意

“这里有个双引号 (\”)”结果为 这里有个双引号 (“)

-转义符形成一些组合,表达一些不可打印的含义

\b“回退 “\n“换行 (光标移动到下行首 )”\r“回车 (光标移动到本行首 )

字符串操作与处理

x+y :连接两个字符串x和y

n*x  :复制 n次字符串x

x in s :判断x是否为s的子串

len(x) :返回x长度

str(x) : 返回任意类型x对应的字符串形式

str (1.23) 结果为 “1.23 ”    str ([1,2]) 结果为 “[1,2] ”

hex(x) 或oct(x) :整数x的十六进制或八进制小写形式的字符串

hex(425) 结果为 “0x1a9 ”    oct (425) 结果为 “0o651 0o651 ”

chr(x) :x为Unicode编码,返回其对应的字符

ord ord(x) :x为字符,返回其对应的 Unicode 编码

字符串处理方法

方法”在编程中是一个专有名词

-“方法 ”特指 <a>.<b>() 风格中的函数 <b>()
-方法本身也是函数,但与 <a> 有关,<a>.<b>() 风格使用
-字符串及变量也是 <a> ,存在一些方法供它使用

str.lower或 str.upper:字符大小写

str.split (sep =None):返回一个列表,根据sep将其分隔

str.count(sub):返回子串sub在str中出现的次数

str.replace(old, new) :用new去替换old部分

str.center (width[, fillchar]):字符串str根据宽度width居中,fillchar可选

str.strip(chars) :从str中去掉在其左侧和右侧chars中列出的字符

str.join(iter) :在iter变量除最后元素外每个元素后增加一个str

字符串类型的格式化

-字符串格式化使用 .format()方法,用法如下:
<模板字符串 >.format(< 逗号分隔的参数 >)

Time库

函数:

下面来写一个文本进度条的程序来练练手:

 

千万不要在Python的IDLE上运行,否则会变成这样:

函数

返回多个参数

调用这个函数的时候会返回一个元组类型的值,可以将他们赋给不同的变量

默认参数

默认参数是指当有参数并不需要在每次调用的时候给定,而是在函数定义的时候就给定了一个初始值

注意
设置默认参数是,必须遵守必选参数在前,默认参数在后,变化大的参数在前变化小的参数在后的原则

提供参数的时候可以按顺序提供,也可以按名字提供,就像这样:

注意
默认参数有个最大的坑:



原因解释如下:
Python函数在定义的时候,默认参数L 的值就被计算出来了,即[] ,因为默认参数L 也是一个变量,它指向对象[] ,每次调用该函数,如果改变了L 的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的[] 了。所以,定义默认参数要牢记一点:默认参数必须指向不变对象!

要修改上面的例子,我们可以用None 这个不变对象来实现:

可变参数

在定义一个函数的时候,在某些情况下,我们并不知道要传入参数的个数,这时候可以用可list或tuple来完成它:

利用可变参数,可以在参数前面加上一个 * ,这样在函数内部接收到的就是一个tuple,函数的代码可以完全不变:

关键字参数

使用关键字参数,可以在函数内部组装一个dict,只需要定义函数的时候加入**kw(名字随意)即可:

在定义一个函数时如果这四种参数都用到了,它们的顺序应该是:必选参数,默认参数,可变参数,关键字参数

递归函数

在一个函数的内部如果调用了函数的本身,那么这就是一个递归函数,递归存在着两个关键特征:链条和基例。递归是数学归纳法思维的编程体现。下面定义一个函数来计算阶乘:

 

赞赏

发表评论

textsms
account_circle
email

XInCheng

Python初学笔记_01
这是我在学习Python过程中的一些小知识的汇合,与之同步(可能滞后一些)进行的是Python_scrapy的学习,当然,学校也开设了C语言课程,我可能将自己容易搞混的东西做一个对比与总结 :shock:…
扫描二维码继续阅读
2018-04-21