您的位置:

python的第一个坑(Python难吗)

本文目录一览:

如何成为Python高手

如果你有一定的计算机编程知识基础,那么很容易学;再如果你对编程十分感兴趣,那么很容易学的。

1,找到合适的入门书籍,大致读一次,循环啊判断啊,常用类啊,搞懂(太难的跳过)

2,做些简单习题,字符串比较,读取日期之类 Python Cookbook不错(太难太无趣的,再次跳过,保持兴趣是最重要的,不会的以后可以再学)

3,加入Python讨论群,态度友好笑眯眯(很重要,这样高手才会耐心纠正你错误常识)。很多小问题,纠结许久,对方一句话点播思路,真的节约你很多时间。耐心指教我的好人,超级超级多谢。

4,解决自己电脑问题。比如下载美剧,零散下载了2,4,5,8集,而美剧共12集,怎样找出漏下的那几集?然后问题分解,1读取全部下载文件名,2提取集的数字,3数字排序和(1--12)对比,找出漏下的。

对于python初学者来说,能找到一个好老师学习格外重要,这能决定你是不是可以做出好的项目,在python开发的路上越走越轻松,如果现在的你缺乏学习经验,找不到老师指导你学习,可以加企 鹅扣-Q前面112再加上中间的983以及最后四位数4903,连在一起就可以了。

5,时刻记住目的,不是为了当程序员,是为了解决问题。比如,想偷懒抓网页内容,用urllib不行,用request也不行,才发现抓取内容涉及那么多方面(cookie,header,SSL,url,javascript等等),当然可以听人家劝,回去好好读书,从头读。 或者,不求效率,只求解决,用ie打开网页再另存为行不行?ie已经渲染过全部结果了。 问题变成:1--打开指定的10个网页(一行代码就行)。更复杂的想保存呢?利用已经存在的包,比如PAM30(我的是Python3),直接打开ie,用函数outHTML另存为文本,再用搜索函数(str搜索也行,re正则也行)找到数据。简单吧?而且代码超级短。

6,保持兴趣,用最简单的方式解决问题,什么底层驱动,各种交换,留给大牛去写吧。我们利用已经有的包完成。

7,耐心读文档,并且练习快速读文档。拿到新包,找到自己所需要的函数,是需要快速读一次的。这个不难,读函数名,大概能猜到是干嘛的,然后看看返回值,能判断是不是自己需要的。

8,写帮助文件和学习笔记,并发布共享。教别人的时候,其实你已经自己再次思考一次了。 我觉得学程序就像学英文,把高频率的词(循环,判断,常用包,常用函数)搞懂,就能拼装成自己想要的软件。 一定要保持兴趣,太复杂的跳过,就像小学数学,小学英语,都是由简入深。 网络很平面,无数国际大牛著作好书,关于Python,算法,电脑,网络,或者程序员思路,或者商业思维(浪潮之巅是本好书)等等,还有国际名校的网络公开课(中英文字幕翻译完毕,观看不是难事),讲计算机,网络,安全,或者安卓系统,什么都有,只要能持续保持兴趣,一点点学习下去,不是难事。 所有天才程序员,都曾是儿童,回到儿童思维来理解和学习。觉得什么有趣,先学,不懂的,先放着,遇到问题再来学,效果更好。 唯一建议是,不要太贪心,耐心学好一门优雅的语言,再学其它。虽然Javascript做特效很炫,或提某问题时,有大牛建议,用Ruby来写更好之类,不要改方向。就像老笑话:“要学习递归,必须首先理解递归。”然后死循环一直下去。坚持学好一门语言,再研究其他。 即使一门语言,跟网络,数据库等等相关的部分,若都能学好,再学其他语言,是很快的事情。 另外就是,用学英文的耐心来学计算机,英文遇到不懂的词,抄下,查询。 python里,看到Http,查查定义,看到outHtml,查查定义,跟初学英语时候一样,不要直接猜意思,因为精确描述性定义,跟含糊自然语有区别的。而新人瞎猜,很容易错误理解,wiki,google很有用。

如何提升Python编程能力

一、Python之禅(The Zen of Python)

The Zen of Python是Python语言的指导原则,遵循这些基本原则,你就可以像个Pythonista一样编程。具体内容你可以在Python命令行输入import this看到:

The Zen of Python, by Tim Peters

Beautiful is better than ugly.

# 优美胜于丑陋(Python以编写优美的代码为目标)

Explicit is better than implicit.

# 明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)

Simple is better than complex.

# 简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)

Complex is better than complicated.

# 复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)

Flat is better than nested.

# 扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)

Sparse is better than dense.

# 间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)

Readability counts.

# 可读性很重要(优美的代码是可读的)

Special cases aren't special enough to break the rules.

Although practicality beats purity.

# 即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)

Errors should never pass silently.

Unless explicitly silenced.

# 不要包容所有错误,除非你确定需要这样做(精准地捕获异常,不写except:pass风格的代码)

In the face of ambiguity, refuse the temptation to guess.

# 当存在多种可能,不要尝试去猜测

There should be one-- and preferably only one --obvious way to do it.

# 而是尽量找一种,最好是唯一一种明显的解决方案(如果不确定,就用穷举法)

Although that way may not be obvious at first unless you're Dutch.

# 虽然这并不容易,因为你不是 Python 之父(这里的Dutch是指Guido)

Now is better than never.

Although never is often better than *right* now.

# 做也许好过不做,但不假思索就动手还不如不做(动手之前要细思量)

If the implementation is hard to explain, it's a bad idea.

If the implementation is easy to explain, it may be a good idea.

# 如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然(方案测评标准)

Namespaces are one honking great idea -- let's do more of those!

# 命名空间是一种绝妙的理念,我们应当多加利用(倡导与号召)

这首特别的“诗”开始作为一个笑话,但它确实包含了很多关于Python背后的哲学真理。Python之禅已经正式成文PEP 20,具体内容见:PEP 20

二、PEP8: Python编码规范(PEP8: Style Guide for Python Code)

Abelson Sussman在《计算机程序的构造和解释》一书中说道:程序是写来给人读的,只是顺带让机器执行。所以,我们在编码时应该尽量让它更易读懂。PEP8是Python的编码规范,官方文档见:PEP 8,PEP是Python Enhancement Proposal的缩写。PEP8包括很多编码的规范,下面主要介绍一下缩进和命名等内容。

空格和缩进(WhiteSpace and Indentation)

空格和缩进在Python语言中非常重要,它替代了其他语言中{}的作用,用来区分代码块和作用域。在这方面PEP8有以下的建议:

1、每次缩进使用4个空格

2、不要使用Tab,更不要Tab和空格混用

3、两个方法之间使用一个空行,两个Class之间使用两个空行

4、添加一个空格在字典、列表、序列、参数列表中的“,“后,以及在字典中的”:“之后,而不是之前

5、在赋值和比较两边放置一个空格(参数列表中除外)

6、紧随括号后面或者参数列表前一个字符不要存在空格

Python命名

命名规范是编程语言的基础,而且大部分的规范对于高级语言来说都是一样的,Python的基本规范如下:

1、方法 属性:joined_lower

2、常量:joined_lower or ALL_CAPS

3、类:StudlyCaps

4、类属性:interface, _internal, __private

5、camelCase only to conform to pre-existing conventions

以上内容只是对PEP8做了非常简单的介绍,由于今天的主题不在于此,所以就不在这里多讲。想要更加深入的了解Python编码规范,可以阅读PEP8官方文档和Google Python编码规范等内容。

三、交换变量值(Swap Values)

在其他语言中,交换两个变量值的时候,可以这样写:

temp = a

a = b

b = temp

在Python中,我们可以简单的这样写:

b, a = a, b

可能你已经在其他地方见过这种写法,但是你知道Python是如何实现这种语法的吗?首先,逗号(,)是Python中tuple数据结构的语法;上面的语法会执行一下的操作:

1、Python会先将右边的a, b生成一个tuple(元组),存放在内存中;

2、之后会执行赋值操作,这时候会将tuple拆开;

3、然后将tuple的第一个元素赋值给左边的第一个变量,第二个元素赋值给左边第二个变量。

再举个tuple拆分的例子:

In [1]: people = ['David', 'Pythonista', '15145551234']

In [2]: name, title, phone = people

In [3]: name

Out[3]: 'David'

In [4]: title

Out[4]: 'Pythonista'

In [5]: phone

Out[5]: '15145551234'

这种语法在For循环中非常实用:

In [6]: people = [['David', 'Pythonista', '15145551234'], ['Wu', 'Student', '15101365547']]

In [7]: for name, title, phone in people:

...: print name, phone

...:

David 15145551234

Wu 15101365547

PS:在使用这种语法时,需要确保左边的变量个数和右边tuple的个数一致,否则,Python会抛出ValueError异常。

更多tuple的例子:

1,

(1,)

(1,)

(1,)

(1)

1

value = 1,

value

(1,)

我们知道:逗号(,)在Python中是创建tuple的构造器,所以我们可以按照上面的方式很方便的创建一个tuple;需要注意的是:如果声明只有一个元素的tuple,末尾必须要带上逗号,两个以上的元素则不需要。声明tuple的语法很简单,但同时它也比较坑:如果你发现Python中的变量不可思议的变成了tuple,那很可能是因为你多写了一个逗号。。

四、Python控制台的"_"(Interactive "_")

这是Python中比较有用的一个功能,不过有很多人不知道(我也是接触Python很久之后才知道的)。。在Python的交互式控制台中,当你计算一个表达式或者调用一个方法的时候,运算的结果都会放在一个临时的变量 _ 里面。_(下划线)用来存储上一次的打印结果,比如:

import math

math.pi / 3

1.0471975511965976

angle = _

math.cos(angle)

0.50000000000000011

_

0.50000000000000011

PS:当返回结果为None的时候,控制台不会打印,_ 里面存储的值也就不会改变。

五、合并字符串(Building Strings from Sub strings)

假如现在有一个list,里面是一些字符串,你现在需要将它们合并成一个字符串,最简单的方法,你可以按照下面的方式去处理:

colors = ['red', 'blue', 'green', 'yellow']

result = ''

for s in colors:

result += s

但是,很快你会发现:这种方法非常低效,尤其当list非常大的时候。Python中的字符串对象是不可改变的,因此对任何字符串的操作如拼接,修改等都将产生一个新的字符串对象,而不是基于原字符串。所以,上面的方法会消耗很大的内存:它需要计算,存储,同时扔掉中间的计算结果。正确的方法是使用Python中的join方法:

result = ','.join(colors)

当合并元素比较少的时候,使用join方法看不出太大的效果;但是当元素多的时候,你会发现join的效率还是非常明显的。不过,在使用的时候请注意:join只能用于元素是字符串的list,它不会进行任何的强制类型转换。连接一个存在一个或多个非字符串元素的list时将抛出异常。

自学Python能学会吗?

python自学完全没有问题的。

首先,你必须对自己有信心,编写程序其实没有太高的技术含量,你只需要遵守编程语言的语法规范,然后在这个基础上去实现你想要的功能。

买一本靠谱的教材,或者在网上找一些教程,把教材的内容看明白,然后把例子程序输入电脑运行,接着尝试修改一下,看看会有什么变化,把一套根据自身的知识基础和能力特点来选择一个岗位类型,目前采用Python的岗位类型可以分成三大类,分别是算法岗、研发岗和应用开发岗,不同岗位对于知识结构的要求有所不同。

从近几年的人才需求情况来看,开发岗的人才需求量相对大一些,而且对于开发人员的整体要求也并不算高。教材学完之后,你就大概知道怎么样用python语言写程序了。

请问我第一个的python逻辑错误在哪里啊?

图一中,当循环四次以后,sandwich_orders中为['tuna','pastrami'],接下来第五次循环时pop方法移除元素'pastrami'并将其值赋值给sandwich,此时'pastrami'已经不在列表sandwich_orders当中,因此if语句判断为False,列表finished_sandwiches中会追加元素'pastrami'。

如何错误使用Python 第400期Python日报

1.Python异常类

Python是面向对象语言,所以程序抛出的异常也是类。常见的Python异常有以下几个,大家只要大致扫一眼,有个映像,等到编程的时候,相信大家肯定会不只一次跟他们照面(除非你不用Python了)。

异常 描述

NameError 尝试访问一个没有申明的变量

ZeroDivisionError 除数为0

SyntaxError 语法错误

IndexError 索引超出序列范围

KeyError 请求一个不存在的字典关键字

IOError 输入输出错误(比如你要读的文件不存在)

AttributeError 尝试访问未知的对象属性

ValueError 传给函数的参数类型不正确,比如给int()函数传入字符串形

2.捕获异常

Python完整的捕获异常的语句有点像:

复制代码代码如下:

try:

try_suite

except Exception1,Exception2,...,Argument:

exception_suite

...... #other exception block

else:

no_exceptions_detected_suite

finally:

always_execute_suite

额...是不是很复杂?当然,当我们要捕获异常的时候,并不是必须要按照上面那种格式完全写下来,我们可以丢掉else语句,或者finally语句;甚至不要exception语句,而保留finally语句。额,晕了?好吧,下面,我们就来一一说明啦。

2.1.try...except...语句

try_suite不消我说大家也知道,是我们需要进行捕获异常的代码。而except语句是关键,我们try捕获了代码段try_suite里的异常后,将交给except来处理。

try...except语句最简单的形式如下:

复制代码代码如下:

try:

try_suite

except:

exception block

上面except子句不跟任何异常和异常参数,所以无论try捕获了任何异常,都将交给except子句的exception block来处理。如果我们要处理特定的异常,比如说,我们只想处理除零异常,如果其他异常出现,就让其抛出不做处理,该怎么办呢?这个时候,我们就要给except子句传入异常参数啦!那个ExceptionN就是我们要给except子句的异常类(请参考异常类那个表格),表示如果捕获到这类异常,就交给这个except子句来处理。比如:

复制代码代码如下:

try:

try_suite

except Exception:

exception block

举个例子:

复制代码代码如下:

try:

... res = 2/0

... except ZeroDivisionError:

... print "Error:Divisor must not be zero!"

...

Error:Divisor must not be zero!

看,我们真的捕获到了ZeroDivisionError异常!那如果我想捕获并处理多个异常怎么办呢?有两种办法,一种是给一个except子句传入多个异常类参数,另外一种是写多个except子句,每个子句都传入你想要处理的异常类参数。甚至,这两种用法可以混搭呢!下面我就来举个例子。

复制代码代码如下:

try:

floatnum = float(raw_input("Please input a float:"))

intnum = int(floatnum)

print 100/intnum

except ZeroDivisionError:

print "Error:you must input a float num which is large or equal then 1!"

except ValueError:

print "Error:you must input a float num!"

[root@Cherish tmp]# python test.py

Please input a float:fjia

Error:you must input a float num!

[root@Cherish tmp]# python test.py

Please input a float:0.9999

Error:you must input a float num which is large or equal then 1!

[root@Cherish tmp]# python test.py

Please input a float:25.091

4

上面的例子大家一看都懂,就不再解释了。只要大家明白,我们的except可以处理一种异常,多种异常,甚至所有异常就可以了。

大家可能注意到了,我们还没解释except子句后面那个Argument是什么东西?别着急,听我一一道来。这个Argument其实是一个异常类的实例(别告诉我你不知到什么是实例),包含了来自异常代码的诊断信息。也就是说,如果你捕获了一个异常,你就可以通过这个异常类的实例来获取更多的关于这个异常的信息。例如:

复制代码代码如下:

try:

... 1/0

... except ZeroDivisionError,reason:

... pass

...

type(reason)

type 'exceptions.ZeroDivisionError'

print reason

integer division or modulo by zero

reason

ZeroDivisionError('integer division or modulo by zero',)

reason.__class__

type 'exceptions.ZeroDivisionError'

reason.__class__.__doc__

'Second argument to a division or modulo operation was zero.'

reason.__class__.__name__

'ZeroDivisionError'

上面这个例子,我们捕获了除零异常,但是什么都没做。那个reason就是异常类ZeroDivisionError的实例,通过type就可以看出。

2.2try ... except...else语句

现在我们来说说这个else语句。Python中有很多特殊的else用法,比如用于条件和循环。放到try语句中,其作用其实也差不多:就是当没有检测到异常的时候,则执行else语句。

Python:第一个python程序 怎么操作?

1、打开notepad++,选择“设置”,“首选项”

2、选择“新建”,设置编码如图所示。

3、编辑程序内容。注意前面不能有空格。python对缩进有严格控制。

4、选择“语言”,“Python”,可以高亮显示

5、保存为py文件。这里保存在G盘的Python目录下。

6、在命令行中运行hello.py文件,执行程序。