[带你飞]一小时带你学会Python

1.面向的读者:

具有Javascript经验的程序猿。

2 快速入门
2.1 Hello world

安装完Python之后,打开IDLE(Python GUI) , 该程序是Python语言解释器,你写的语句能够立即运行.我们写下一句著名的程序语句:

1 print "Hello,world!"

并按回车.你就能看到这句被K&R引入到程序世界的名言.

在解释器中选择"File"--"New Window" 或快捷键 Ctrl+N , 打开一个新的编辑器.写下如下语句:

1 print "Hello,world!"
2 raw_input("Press enter key to close this window...");

保存为a.py文件.按F5,你就可以看到程序的运行结果了.这是Python的第二种运行方式.

找到你保存的a.py文件,双击.也可以看到程序结果.Python的程序能够直接运行,对比Java,这是一个优势.

2.2 国际化支持
我们换一种方式来问候世界.新建一个编辑器并写如下代码:

1 print "欢迎来到奥运中国!"
2 raw_input("Press enter key to close this window...");

在你保存代码的时候,Python会提示你是否改变文件的字符集,结果如下:

1 # -*- coding: cp936 -*-
2
3 print "欢迎来到奥运中国!"
4 raw_input("Press enter key to close this window...");

将该字符集改为我们更熟悉的形式:

1 # -*- coding: GBK -*-
2
3 print "欢迎来到奥运中国!" # 使用中文的例子
4 raw_input("Press enter key to close this window...");

程序一样运行良好.

2.3 方便易用的计算器
用微软附带的计算器来计数实在太麻烦了.打开Python解释器,直接进行计算:

1 a=100.0
2 b=201.1
3 c=2343
4 print (a+b+c)/c

Python会自动帮你实现类型转换。

2.4 字符串,ASCII和UNICODE
可以如下打印出预定义输出格式的字符串:

1 print """
2 Usage: Python
3 -Java
4 -C++
5 """

结果输出:

1 Usage: Python
2 -Java
3 -C++

字符串是怎么访问的?请看这个例子:

 1 word="abcdefg"                         // 数组
 2 a=word[2]                              // 数组中的一个值
 3 print "a is: "+a
 4 b=word[1:3]                            // 数组范围,取1到2的值,但是不取最后区间的值
 5 print "b is: "+b # index 1 and 2 elements of word.
 6 c=word[:2]                             // 数组范围,从开始取到2,但是不取2的值
 7 print "c is: "+c # index 0 and 1 elements of word.
 8 d=word[0:]                             // 从头开始取到尾
 9 print "d is: "+d # All elements of word.
10 e=word[:2]+word[2:]                    // 继续从头取到尾
11 print "e is: "+e # All elements of word.
12 f=word[-1]                             // 取最后一个元素“g”
13 print "f is: "+f # The last elements of word.
14 g=word[-4:-2]                          // 倒着取,打印“de”
15 print "g is: "+g # index 3 and 4 elements of word.
16 h=word[-2:]                            // 倒着取,打印“fg”
17 print "h is: "+h # The last two elements.
18 i=word[:-2]                            // 倒着去,打印“abcde”
19 print "i is: "+i # Everything except the last two characters
20 l=len(word)                            // 长度,结果为7
21 print "Length of word is: "+ str(l)

请注意ASCII和UNICODE字符串的区别:

1 print "Input your Chinese name:"
2 s=raw_input("Press enter to be continued...");
3 print "Your name is ... : " +s;
4 l=len(s)
5 print "Length of your Chinese name in asc codes is:"+str(l);
6 a=unicode(s,"GBK")
7 l=len(a)
8 print "I‘m sorry we should use unicode char!Characters number of your Chinese 9 name in unicode is:"+str(l);

2.5 使用List
类似Java里的List,这是一种方便易用的数据类型:

 1 word=[‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘,‘g‘]
 2 a=word[2]                                                 // a is: c
 3 print "a is: "+a
 4 b=word[1:3]
 5 print "b is: "
 6 print b # index 1 and 2 elements of word.                 // [‘b‘, ‘c‘]
 7 c=word[:2]
 8 print "c is: "
 9 print c # index 0 and 1 elements of word.                 // [‘a‘, ‘b‘]
10 d=word[0:]
11 print "d is: "
12 print d # All elements of word.                           // [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘, ‘g‘]
13 e=word[:2]+word[2:]
14 print "e is: "
15 print e # All elements of word.                           // [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘, ‘g‘]
16 f=word[-1]
17 print "f is: "
18 print f # The last elements of word.                      // g
19 g=word[-4:-2]
20 print "g is: "
21 print g # index 3 and 4 elements of word.                 // [‘d‘, ‘e‘]
22 h=word[-2:]
23 print "h is: "
24 print h # The last two elements.                          // [‘f‘, ‘g‘]
25 i=word[:-2]
26 print "i is: "
27 print i # Everything except the last two characters       // [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘]
28 l=len(word)
29 print "Length of word is: "+ str(l)                       // 7
30 print "Adds new element..."
31 word.append(‘h‘)
32 print word                                                // [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘, ‘g‘, ‘h‘]

2.6 条件和循环语句
1
# Multi-way decision
2
x=int(raw_input("Please enter an integer:"))
3
if x<0:
4
x=0
5
print "Negative changed to zero"elif x==0:
6
print "Zero"
7

8
else:
9
print "More"
10

11
# Loops List
12
a = [‘cat‘, ‘window‘, ‘defenestrate‘]
13
for x in a:
14
print x, len(x)
2.7 如何定义函数
1
# Define and invoke function.
2
def sum(a,b):
3
return a+bfunc = sum
4
r = func(5,6)
5
print r
6

7
# Defines function with default argument
8
def add(a,b=2):
9
return a+b
10
r=add(1)
11
print r
12
r=add(1,5)
13
print r
并且,介绍一个方便好用的函数:

1
# The range() function
2
a =range(5,10)
3
print a
4
a = range(-2,-7)
5
print a
6
a = range(-7,-2)
7
print a
8
a = range(-2,-11,-3) # The 3rd parameter stands for step
9
print a
2.8 文件I/O
1
spath="D:/download/baa.txt"
2
f=open(spath,"w") # Opens file for writing.Creates this file doesn‘t exist.
3
f.write("First line 1.\n")
4
f.writelines("First line 2.")f.close()
5

6
f=open(spath,"r") # Opens file for reading
7

8
for line in f:
9
print line
10

11
f.close()
2.9 异常处理
1
s=raw_input("Input your age:")
2
if s =="":
3
raise Exception("Input must no be empty.")try:
4
i=int(s)
5
except ValueError:
6
print "Could not convert data to an integer."
7
except:
8
print "Unknown exception!"
9
else: # It is useful for code that must be executed if the try clause does not raise an exception
10
print "You are %d" % i," years old"
11
finally: # Clean up action
12
print "Goodbye!"
2.10 类和继承
1
class Base:
2
def __init__(self):
3
self.data = []
4
def add(self, x):
5
self.data.append(x)
6
def addtwice(self, x):
7
self.add(x)
8
self.add(x)# Child extends Base
9
class Child(Base):
10
def plus(self,a,b):
11
return a+b
12

13
oChild =Child()
14
oChild.add("str1")
15
print oChild.data
16
print oChild.plus(2,3)
2.11 包机制
每一个.py文件称为一个module,module之间可以互相导入.请参看以下例子:

1
# a.py
2
def add_func(a,b):
3
return a+b

1
# b.py
2
from a import add_func # Also can be : import aprint "Import add_func from module a"
3
print "Result of 1 plus 2 is: "
4
print add_func(1,2) # If using "import a" , then here should be "a.add_func"
module可以定义在包里面.Python定义包的方式稍微有点古怪,假设我们有一个parent文件夹,该文件夹有一个child子文件夹.child中有一个module a.py . 如何让Python知道这个文件层次结构?很简单,每个目录都放一个名为_init_.py 的文件.该文件内容可以为空.这个层次结构如下所示:

1
parent
2
--__init_.py
3
--child
4
-- __init_.py
5
--a.pyb.py
那么Python如何找到我们定义的module?在标准包sys中,path属性记录了Python的包路径.你可以将之打印出来:

1
import sys
2

3
print sys.path
通常我们可以将module的包路径放到环境变量PYTHONPATH中,该环境变量会自动添加到sys.path属性.另一种方便的方法是编程中直接指定我们的module路径到sys.path 中:

1
import sys
2
sys.path.append(‘D:\\download‘)from parent.child.a import add_func
3

4
print sys.path
5

6
print "Import add_func from module a"
7
print "Result of 1 plus 2 is: "
8
print add_func(1,2)
总结
你会发现这个教程相当的简单.许多Python特性在代码中以隐含方式提出,这些特性包括:Python不需要显式声明数据类型,关键字说明,字符串函数的解释等等.我认为一个熟练的程序员应该对这些概念相当了解,这样在你挤出宝贵的一小时阅读这篇短短的教程之后,你能够通过已有知识的迁移类比尽快熟悉Python,然后尽快能用它开始编程.

时间: 2024-10-12 04:40:31

[带你飞]一小时带你学会Python的相关文章

带你理解带你飞——高斯混合模型算法

GMM这是图像处理,模式识别和深度学习领域一个百嚼不烂的话题.很多人被一堆数学公式,迭代求和和看似毫无联系的likehood EM算法搞得糊里糊涂. 其实就算羡慕着很多牛气哄哄的学霸炫耀公式推理的IT普工们,我们有没有问过自己,我们真的知道GMM吗?于是有些人和我一样有了如下的思考和疑问: 1.到底什么是高斯混合模型?最好能一句话或者简单的话说明白,至少让我一辈子也忘不掉这个该死的算法... 2.GMM是如此复杂有效,能让GMM算法向富士康的iphone流水线一样,虽然精密庞杂但却能完整直观的展

五一装修优惠那么大,云麦装修带你装修带你飞

"五一"小长假来临之际,看着别人都在做着出行计划,你还在埋头苦查装修攻略吗?想着别人又要晒美食晒美景,你还在计划到材料城跑断腿吗?不如,把房子装修交给我们,你免费旅游去! 云麦装饰-米图原创设计机构大明宫钻石店更推出"五一放松计划",活动期间签订装修合同客户,即可参加抽奖,旅游基金百分百中奖!韩国首尔五天四日双人游,追逐太阳的后裔宋欧巴的脚步!香港迪士尼,珠海长隆海洋王国双人套餐!更有丽江/成都/三亚/厦门/贵阳等往返机票!300/500携程旅游基金,你想去哪就去哪

Tarjan 联通图 Kuangbin 带你飞 联通图题目及部分联通图题目

Tarjan算法就不说了 想学看这 https://www.byvoid.com/blog/scc-tarjan/ https://www.byvoid.com/blog/biconnect/ 下面是几份基本的模版 首先是无向图割点桥的代码 下面的代码是用于求割点数目的 其中add_block[u] = x  表示删除u点之后增加的联通块个数.注意是增加的联通块个数 const int MAXN = 1010; const int MAXM = 10010; const int INF = 0x

5个KO实例带你装B带你飞

Knockoutjs 以下简称 ko, 是一个 javascript 的 MVVM 框架. 在 MVC 4 的项目模板中, 默认会引用 knockoutjs, 我正式接触它也不过4个月的时间. 在没有使用它之前, 要做一个主从关系的维护, 大概要写一堆 CloneNode / Append, js 水平一般的同学, 要写这样一个业务页面, 大概要写几百几千行 js 才行. 本示例不是介绍 ko 的用法, 而是 以 我在项目中 处理过的 稍有些复杂的 业务 为原型, 做深入一步的理解如何用KO带你

带你装逼带你飞之微信群聊匿名消息

带你装逼带你飞之微信群聊匿名消息 记得八月份网上有个IOS版的微信匿名消息插件,可是2天后被封了...废话不说,其实封的是插件,不是原理~ 九月份,UWP 微信出来了(?),然而那个微信有BUG,比如模板消息可以随便转发...(就是类似微信支付消息,登陆通知消息etc…)所以可以利用这一点进行发送装逼消息.(如果还想长时间装逼,那么请关闭自动更新功能) 如果你有公众号那么就发个消息直接转发吧,如果没有的话照下面做... 发消息前的准备:退出UWP微信的登陆并清空所有数据.Windbg调试工具并于

尚学堂:带你装逼带你飞

在很多人看来,计算机很复杂,有数不清的代码和程序,可以完成各种各样的任务,功能千变万化,要掌握它是一件难比登天的任务,其实不然.计算机这种复杂性,完全是人赋予的,计算机只是单纯的按照人的指令去完成我们想要完成的事情,只要掌握了一些窍门,计算机还是简单的. 一.名师带你飞 有一个好的老师是很重要的.经过这一次的培训,我对java的各种对象.方法.类等方面上有了一个比较清晰的想法.当自学时你对计算机的了解是模糊的,学起来会比较迷茫点,但是有一个比较好的老师来指点下,那样的效果就不同了. 师者,所以传

***老华带你飞买房篇总结

首先,看完这个,心态上是更加坚定了,由之前的踌躇犹豫观望到现在非常坚定地一定要在年底把房子的事情搞定.其次,技术层面,知道了哪些房是不能买的,多久应该换房,要带着怎样的思维去买房.不过,由于期待过高,在房子的选择方面还是有很多疑问,当然,这个也只能靠自己花时间精力去选择了,不能指望老华啥都告诉你. 摘抄了一些笔记,和大家分享下:1.国家外汇储备不断增加导致国家不断发行人民币,导致市场上人民币不断贬值,导致通货膨胀越来越高,导致房价上涨.2.货币不断发行,钱不断贬值,买房是最好的投资.3.买房要越

Linux界顶级运维专家马哥今晚亲自带你飞,错过了再等一年!

良心提示:文末有彩蛋哦! 精彩纷呈.干货不能再多的马哥2016Linux运维公开课第一季完美落幕! 2016年的春天,每周三都有马哥Linux运维公开课,你都参加了吗?马哥Linux运维公开课第一季在来自阿里的罗老师的<应运而生的架构>完美落幕! 错过了第一季,你还要错过第二季吗? 本周三由马哥教育创始人-马哥作为先锋,先为小伙伴们带来一场Linux学习饕餮盛宴--<Linux运维工程师学习路线图>!速度带上你的运维小(hao)伙(ji)伴(you)报名马哥Linux运维公开课第二

kuangbin带你飞专题一 简单搜索 题解

目录 [kuangbin带你飞]专题一 简单搜索 [kuangbin带你飞]专题一 简单搜索 总结:用时2天半终于把这个专题刷完了 对于最基础的dfs bfs 路径打印 状态转移也有了一点自己些微的理解 其实2天半可以压缩到1天半的 主要是自己太懒了...慢慢加油刷bin神的专题呀 从大二下学期开始学算法 一开始就知道这个专题 一开始对于这个专题里的所有问题感觉都好难啊..就直接放弃了 看lrj的书 现在看到这个专题还挺唏嘘的吧 突然觉得思维和想法也不是很难 果然是那个时候心不静&还是储量不够吗