python 简明教程
第一个源程序
#!/usr/bin/python
# Filename :
helloworld.pyprint
'Hello world'
执行:
$ python helloworld.py
或者 $ ./helloworld.py
因为系统知道它必须用源文件第一行指定的那个解释器来运行程序
字面值常量:
这样的字符串'This is a string'、
"It's a string!"
数
在Python中有4种类型的数——整数、长整数、浮点数和复数。
2
是一个整数的例子。- 长整数不过是大一些的整数。
3.23
和52.3E-4
是浮点数的例子。E标记表示10的幂。在这里,52.3E-4
表示52.3 * 10
-4。(-5+4j)
和(2.3-4.6j)
是复数的例子。
变量
它们的值可以变化,即你可以使用变量存储任何东西。
标识符的命名
变量是标识符的例子。 标识符 是用来标识 某样东西 的名字。在命名标识符的时候,你要遵循这些规则:
标识符的第一个字符必须是字母表中的字母(大写或小写)或者一个下划线(‘ _ ’)。
标识符名称的其他部分可以由字母(大写或小写)、下划线(‘ _ ’)或数字(0-9)组成。
标识符名称是对大小写敏感的。例如,
myname
和myName
不是一个标识符。注意前者中的小写n和后者中的大写N。有效 标识符名称的例子有
i
、__my_name
、name_23
和a1b2_c3
。无效 标识符名称的例子有
2things
、this is spaced out
和my-name
。
数据类型
变量可以处理不同类型的值,称为数据类型。基本的类型是数和字符串,我们已经讨论过它们了。在后面的章节里面,我们会研究怎么用类创造我们自己的类型。
缩进
在逻辑行首的空白(空格和制表符)用来决定逻辑行的缩进层次,从而用来决定语句的分组。
这意味着同一层次的语句必须有相同的缩进。每一组这样的语句称为一个块。
你需要记住的一样东西是错误的缩进会引发错误。例如:
i =
5
print
'Value is'
, i
# Error! Notice a single space at the start of the
lineprint
'I repeat, the
value is', i
当你运行这个程序的时候,你会得到下面的错误:
File "whitespace.py", line 4
print 'Value is', i
# Error! Notice a single space at the start of the line
^
SyntaxError:
invalid syntax
它告诉你,
你不能随意地开始新的语句块 (当然除了你一直在使用的主块)。何时你能够使用新块,将会在后面的章节,如控制流中详细介绍。
如何缩进
不要混合使用制表符和空格来缩进,因为这在跨越不同的平台的时候,无法正常工作。我
强烈建议 你在每个缩进层次使用 单个制表符 或 两个或四个空格
。
选择这三种缩进风格之一。更加重要的是,选择一种风格,然后一贯地使用它,即 只 使用这一种风格。
运算符优先级
如果你有一个如2 + 3 * 4
那样的表达式,是先做加法呢,还是先做乘法?我们的中学数学告诉我们应当先做乘法——这意味着乘法运算符的优先级高于加法运算符。
我建议你使用圆括号来分组运算符和操作数,以便能够明确地指出运算的先后顺序,使程序尽可能地易读。例如,2 + (3 * 4)
显然比2 + 3 * 4
清晰。
表达式
例5.1 使用表达式
#!/usr/bin/python
# Filename:
expression.py
length =
5
breadth =
2
area = length * breadth
print
'Area is'
,
areaprint
'Perimeter
is',
2
* (length +
breadth)
输出
$ python expression.py
Area is 10
Perimeter is 14
它如何工作
注意Python如何打印“漂亮的”输出。尽管我们没有在'Area
和变量
is'area
之间指定空格,Python自动在那里放了一个空格,这样我们就可以得到一个清晰漂亮的输出,而程序也变得更加易读(因为我们不需要担心输出之间的空格问题)。这是Python如何使程序员的生活变得更加轻松的一个例子。
使用if语句
例6.1 使用if语句
#!/usr/bin/python
# Filename: if.py
number =
23
guess =
int
(
raw_input
(
'Enter an integer :
'))
if
guess ==
number: print
'Congratulations, you guessed it.'
# New
block starts here print
"(but you do not win any prizes!)"
# New
block ends hereelif
guess <
number: print
'No, it is a
little higher than that' # Another
block # You can do whatever you want in a
block ...else
:
print
'No, it is a little lower than that'
# you must have guess > number to reach
here
print
'Done'
# This last statement is always
executed, after the if statement is executed
输出
$ python if.py
Enter an integer : 50
No, it is a
little lower than that
Done
$ python if.py
Enter an integer : 22
No,
it is a little higher than that
Done
$ python if.py
Enter an integer :
23
Congratulations, you guessed it.
(but you do not win any
prizes!)
Done
使用while语句
例6.2 使用while语句
#!/usr/bin/python
# Filename:
while.py
number =
23
running =
True
while
running:
guess =
int
(
raw_input
(
'Enter an integer :
'))
if
guess ==
number: print
'Congratulations, you guessed it.'
running =
False
# this causes the while
loop to stop elif
guess <
number: print
'No, it
is a little higher than that' else
:
print
'No, it is a little lower than that'
else
:
print
'The while loop is over.'
# Do
anything else you want to do here
print
'Done'
输出
$ python while.py
Enter an integer : 50
No, it is a
little lower than that.
Enter an integer : 22
No, it is a little higher
than that.
Enter an integer : 23
Congratulations, you guessed it.
The
while loop is over.
Done
使用for语句
例6.3 使用for语句
#!/usr/bin/python
# Filename:
for.py
for
i
in
range
(
1
,
5
):
print
i
else
:
print
'The for loop is over'
输出
$ python for.py
1
2
3
4
The for loop is
over
使用break语句
例6.4 使用break语句
#!/usr/bin/python
# Filename:
break.py
while
True
:
s =
raw_input
(
'Enter something :
')
if
s ==
'quit'
:
break
print
'Length of the string is'
,
len
(s)
print
'Done'
使用continue语句
例6.5 使用continue语句
#!/usr/bin/python
# Filename:
continue.py
while
True
:
s =
raw_input
(
'Enter something :
')
if
s ==
'quit'
:
break
if
len
(s) <
3
:
continue
print
'Input is of sufficient length'
#
Do other kinds of processing here...
输出
$ python continue.py
Enter something : a
Enter
something : 12
Enter something : abc
Input is of sufficient
length
Enter something : quit
定义函数
函数是重用的程序段。它们允许你给一块语句一个名称,然后你可以在你的程序的任何地方使用这个名称任意多次地运行这个语句块。这被称为 调用 函数。我们已经使用了许多内建的函数,比如len
和range
。
函数通过def
关键字定义。def关键字后跟一个函数的 标识符 名称,然后跟一对圆括号。圆括号之中可以包括一些变量名,该行以冒号结尾。接下来是一块语句,它们是函数体。下面这个例子将说明这事实上是十分简单的:
例7.1 定义函数
#!/usr/bin/python
# Filename:
function1.py
def
sayHello
():
print
'Hello World!'
# block
belonging to the function
sayHello()
# call the function
输出
$ python function1.py
Hello World!
使用函数形参
例7.2 使用函数形参
#!/usr/bin/python
# Filename:
func_param.py
def
printMax
(a, b):
if
a > b:
print
a,
'is maximum'
else
:
print
b,
'is
minimum'
printMax(
3
,
4
)
# directly
give literal values
x =
5
y =
7
printMax(x, y)
#
give variables as arguments
(源文件:code/func_param.py)
输出
$ python func_param.py
4 is minimum
7 is maximum
使用局部变量
例7.3 使用局部变量
#!/usr/bin/python
# Filename:
func_local.py
def
func
(x):
print
'x is'
, x
x =
2
print
'Changed local x to'
, x
x =
50
func(x)
print
'x is still'
, x
输出
$ python func_local.py
x is 50
Changed local x to
2
x is still 50
使用global语句
如果你想要为一个定义在函数外的变量赋值,那么你就得告诉Python这个变量名不是局部的,而是 全局
的。我们使用global
语句完成这一功能。没有global
语句,是不可能为定义在函数外的变量赋值的。
例7.4 使用global语句
#!/usr/bin/python
# Filename:
func_global.py
def
func
():
global
x
print
'x is'
, x
x =
2
print
'Changed local x to'
, x
x =
50
func()
print
'Value of x is'
, x
输出
$ python func_global.py
x is 50
Changed global x to
2
Value of x is 2
默认参数值
对于一些函数,你可能希望它的一些参数是 可选 的,如果用户不想要为这些参数提供值的话,这些参数就使用默认值。这个功能借助于默认参数值完成。你可以在函数定义的形参名后加上赋值运算符(=)和默认值,从而给形参指定默认参数值。
注意,默认参数值应该是一个参数。更加准确的说,默认参数值应该是不可变的——这会在后面的章节中做详细解释。从现在开始,请记住这一点。
使用默认参数值
例7.5 使用默认参数值
#!/usr/bin/python
# Filename:
func_default.py
def
say
(message, times =
1
):
print
message * times
say(
'Hello'
)
say(
'World'
,
5
)
(源文件:code/func_default.py)
输出
$ python
func_default.py
Hello
WorldWorldWorldWorldWorld
它如何工作
名为say
的函数用来打印一个字符串任意所需的次数。如果我们不提供一个值,那么默认地,字符串将只被打印一遍。我们通过给形参times
指定默认参数值1
来实现这一功能。
在第一次使用say
的时候,我们只提供一个字符串,函数只打印一次字符串。在第二次使用say
的时候,我们提供了字符串和参数5
,表明我们想要
说 这个字符串消息5遍。
重要
只有在形参表末尾的那些参数可以有默认参数值,即你不能在声明函数形参的时候,先声明有默认值的形参而后声明没有默认值的形参。
这是因为赋给形参的值是根据位置而赋值的。例如,def
是有效的,但是
func(a, b=5)def func(a=5, b)
是 无效 的。
python 简明教程的更多相关文章
- 《Python简明教程》总结
Python经典教程<Python简明教程> 目录: 为什么Python 安装Python 体验Python Python数据类型 运算符与表达式 控制流 函数 模块 数据结构 解决问题 ...
- 【笔记】Python简明教程
Python简明教程,此资源位于http://woodpecker.org.cn/abyteofpython_cn/chinese/ s=u'中文字符' #u表示unicode,使用u之后能正常显示中 ...
- python中global的用法——再读python简明教程
今天看了知乎@萧井陌的编程入门指南,想重温一下 <python简明教程>,对global的用法一直不太熟练,在此熟练一下,并实践一下python中list.tuple.set作为参数的区别 ...
- python简明教程
Python简明教程 MachinePlay关注 0.7072018.09.26 01:49:43字数 2,805阅读 9,287 Python一小时快速入门 1.Python简介 pylogo. ...
- Python 简明教程 --- 3,Python 基础概念
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 控制复杂性是计算机编程的本质. -- Brian Kernighan 了解了如何编写第一个Pytho ...
- Python 简明教程 --- 2,第一个Python 程序
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 如果你发现特殊情况太多,那你肯定是用错方法了. -- Carig Zerouni 当你在自己的电脑上 ...
- Python 简明教程 --- 1,搭建Python 环境
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 人生苦短,我用Python. -- 龟叔T恤 Python 是一门解释型语言,所以要想运行Pytho ...
- Python 简明教程 --- 18,Python 面向对象
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 代码能借用就借用. -- Tom Duff 目录 编程可分为面向过程编程和面向对象编程,它们是两种不 ...
- Python 简明教程 --- 13,Python 集合
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 如果代码和注释不一致,那很可能两者都错了. -- Norm Schryer 目录 前几节我们已经介绍 ...
- Python 简明教程 --- 14,Python 数据结构进阶
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 如果你发现特殊情况太多,那很可能是用错算法了. -- Carig Zerouni 目录 前几节我们介 ...
随机推荐
- VS中子对话框的关闭回调函数
新建了QDialog的子类时,如果需要回调它的关闭函数 1.加入头文件#include <QCloseEvent> 2.重写函数 protected: void closeEvent(QC ...
- POJ - 1463 Strategic game (树状动态规划)
这题做的心塞... 整个思路非常清晰,d[i][0]表示第i个结点不设置监察的情况下至少需要的数量:d[i][1]表示第i个结点设置检查的情况下的最小需要的数量. 状态转移方程见代码. 但是万万没想到 ...
- UVa 11404 回文子序列(LCS求最长回文串长度)
https://vjudge.net/problem/UVA-11404 题意: 给定一个由小写字母组成的字符串,删除其中的0个或多个字符,使得剩下的字母(顺序不变)组成一个尽量长的回文串.如果有多解 ...
- POJ 1159 Palindrome(最长公共子序列)
http://poj.org/problem?id=1159 题意: 给出一个字符串,计算最少要插入多少个字符可以使得该串变为回文串. 思路: 计算出最长公共子序列,再用原长-LCS=所要添加的字符数 ...
- 安装 bochs
sudo apt-get install bochs 以后接着安装bochs-x
- [html5]HTML5中<section>和<article>的区别
一.section元素 从字面理解就是区块.部分的意思,相对于article元素更加广泛,每个区块都可以使用,比如页面里的导航菜单.文章正文.文章的评论等. 1.section元素用于对网站或应用程序 ...
- css3 属性——calc()
其实在之前学习CSS3的时候,我并没有注意到有calc()这个属性,后来在看一个大牛的代码的时候看到了这个,然后就引发了后来的一系列的查找.学习,以及这篇博客的诞生.好了,废话不多说了,来干正事. 一 ...
- DateTime和字符串转换问题
DateTime和string之间的相互转换经常碰到,可就这么简单的一个转换其中也有些需要注意的地方. static void Main(string[] args) { string format ...
- hosts 配置
hosts 配置 在windows上比较好的方法就是在本地配制hosts,在windows/system32/drivers/etc/hosts 下,增加 127.0.0.1 m.t.XXXX.com ...
- chrome 49 版本bug: flex父元素设置flex:1 , 子元素用height:100%无法充满父元素
1 <div class="container"> <div class="item"> <div class="ite ...