Python

记录学习和使用Python过程中遇到的问题以及解决的办法

python中文乱码

LC 2016-05-13 Python

我们使用Python时,常常会用到交互命令raw_input,但是如果输入中文,没有经过编码处理,有时候程序就不是你想要的结果。 # -*- coding: utf-8 -*- import os print u"这里是来自LC\'的问候。" # 这里是来自LC'的问候。 print '=' * 10 # ========== print u'这将直接执行' + os.getcwd() # 这将直接执行C:\Python27 print "直接打印Unicode" # 鐩存帴鎵撳嵃Unicode print u"直接打印Unicode" # 直接打印Unicode print u"Unicode转换成GB18030".encode('gb18030') # Unicode转换成GB18030 print "UTF-8中文转换到GB18030, 然后再打印".decode("utf-8").encode('gb18030') # UTF-8中文转换到GB18030, 然后再打印 while True: import sys, locale message1 = raw_input(u'提问1:'.encode('gb18030')).decode(sys.stdin.encoding or locale.getpreferredencoding(True)) if message1 == u"你好": print message1 else: print u"我不知道你在说什么" message2 = raw_input(u'提问2>'.encode('gb18030')) print message2 if message2 == u"你好": print message2 else: print u"我不知道你在说什么" #import chardet #print chardet.detect(message)     如何把raw_input输入的字符转成utf-8编码格式? Python中可以使用decode和encode两个方法。先decode把str转成Unicode格式,然后encode把Unicode编成要求的字符串 。 decode用法:str  -> decode('the_coding_of_str') -> unicode encode用法:unicode -> encode('the_coding_you_want') -> str 字符串是Unicode经过编码后的字节组成。decode时需要知道输入的编码格式,如果格式不对python会抛出错误   C:\Python27>python bianmaceshi.py 这里是来自LC'的问候。 ========== 这将直接执行C:\Python27 鐩存帴鎵撳嵃Unicode -- 直接打印出来就是这样的乱码,使用后面三种格式。就对了 直接打印Unicode Unicode转换成GB18030 UTF-8中文转换到GB18030, 然后再打印 提问1:你好 你好 提问2>你好 你好 bianmaceshi.py:26: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode...

使用python提取mdx中的数据

LC 2016-05-10 Python

使用python提取mdx中的数据 mdx/mdd 是供 MDict、GoldenDict 等加载使用的词库,有些时候我们想要自己动手排版,这就需要解压 mdx/mdd ,提取其中文字、图片、音频等数据,这时候就可以利用 Python 脚本来处理。 我使用的是Python 2.7和readmdict.py、 ripemd128.py、pureSalsa20.py 1.运行 python readmdict.py 返回错误 LZO compression support is not available 2.用编辑器打开readmdict.py文件看了一下,将以下几行都注释掉: try: import lzo except ImportError: lzo = None print("LZO compression support is not available")   运行 python readmdict.py C:\Python27\readmdict>python readmdict.py Try Brutal Force on Encrypted Key Blocks Traceback (most recent call last): File "readmdict.py", line 649, in <module> mdx = MDX(args.filename, args.encoding, args.substyle, args.passcode) File "readmdict.py", line 503, in __init__ MDict.__init__(self, fname, encoding, passcode) File "readmdict.py", line 105, in __init__ self._key_list = self._read_keys_brutal() File "readmdict.py", line...

新手学python-2015年终奖计算python实现

LC 2016-05-10 Python

  年终奖个人所得税计算方法   年终奖拿到手大家乐开怀,不过年终奖也会要像发工资一样。 要交税费的哦。很多人不知道年终奖个人所得税怎么计算!这里小编居仁义就来为大家分享年终奖个人所得税的计算方法。 仅供参考!!   国税发[2005]9号文件基本规定是:“纳税人取得全年一次性奖金,应单独作为一个月工资、薪金所得计算纳税”。   年终奖个人所得税计算方式:   1、发放年终奖的当月工资高于3500元时,年终奖扣税方式为:年终奖*税率-速算扣除数,税率是按年终奖/12作为“应纳税所得额”对应的税率。   2、当月工资低于3500元时,年终奖个人所得税=(年终奖-(3500-月工资))*税率-速算扣除数,税率是按年终奖-(3500-月工资)除以12作为“应纳税所得额”对应的税率。   这里我们以一个示例进行计算演示:   小王在2013年12月工资6000元,同时领到2013年的年终奖20000元,当月所需缴纳的个人所得税如下:   1)当月工资个人所得税=(6000-3500)*10%-105=145元   2)年终奖个人所得税=20000*10%-105=1895元   当月个人所得税总额=145+1895=2040元   由于单位发放给员工的年终奖形式不同,个人所得税计算方法也不尽相同。   一、员工当月的工资薪金超过「3500」元,再发放的年终奖单独作为一个月的工资计算缴纳个人所得税。   全年一次性奖金,单独作为一个月计算时,除以12找税率,但计算税额时,速算扣除数只允许扣除一次。   例一:赵某2013年1月工资5000,年终奖24000,无其它收入。   赵某工资部分应缴纳个人所得税:(5000-3500)*3%=45元   赵某年终奖(24000)部分应缴纳个人所得税计算:   先将雇员当月内取得的全年一次性奖金,除以12个月,即:24000/12=2000元,   再按其商数确定适用税率为10%,速算扣除数为105.   赵某年终奖24000应缴纳个人所得税:   24000*10%-105=2295元。   赵某2013年1月份应缴纳个人所得税2340元。   二、员工当月的工资薪金不超过3500元,再发放的年终奖单独作为一个月的工资计算缴纳个人所得税。   但可以将全年一次性奖金减除“雇员当月工资薪金所得与费用扣除额的差额”后的余额,作为应纳税所得额。其中“雇员当月工资薪金所得”以收入额扣除规定标准的免税所得(如按规定缴纳的社会保险和住房公积金等)后的数额。   例二:钱某2013年1月工资2000,年终奖24000,无其它收入。   钱某当月工资2000元,未超过费用扣除标准3500元,不需要缴纳个人所得税。   钱某2013年1月当月工资薪金所得与费用扣除额的差额为3500-2000=1500元。   钱某年终奖24000元,先减除“当月工资薪金所得与费用扣除额的差额(1500元)”,22500元为应纳税所得额。   22500除以12个月,即:22500/12=1875元,   再按其商数确定适用税率为10%,速算扣除数为105.   钱某年终奖24000应缴纳个人所得税:   (24000-1500)*10%-105=2145元。   钱某2013年1月份应缴纳个人所得税2145元。   三、员工一个年度在两个以上单位工作过,只能按照国税发[2005]9号文件规定,在一个纳税年度内,对每一个纳税人年终奖计税办法只允许采用一次,纳税人可以自由选择采用该计税办法的时间和发放单位计算。   该条款的要点是:   1,一个员工2013年1月发放的年终奖适用了除以12找税率的优惠计算政策,2013年其它月份就不能再适用了。   2,一个员工一年一次,在两处以上取得年终奖,也只能适用一次。   3,员工即使工作时间不足12个月,也可以适用一次。   例三:孙某2012年1-3月在石油企业工作,2012年4-8月跳槽到电信企业,2012年9月至今跳槽到房地产企业工作,   如果孙某2012年12月在房地产企业取得工资5000,年终奖24000,其它无收入,虽然钱某只2012年在房地产企业工作4个月,但其应缴纳个人所得税与例一赵某相同,即当月工资部分应缴纳个人所得税45,年终奖部分也是除12找税率,应缴纳个税2295元。   房地产企业计提年终奖时,计提、发放会计处理同例一。   四、员工同一月份在两个以上单位取得年终奖,可以选择一个单位的一次性奖金按照国税发[2005]9号文件优惠办法计算,从另一单位取得的年终奖合并到当月工资薪金项目缴税。   国税发[2005]9号文件规定:“在一个纳税年度内,对每一个纳税人,该计税办法只允许采用一次”。如果同一个人同月在两个企业都取得了年终一次性奖金,纳税人在自行申报时,不可以将这两项奖金合并计算缴纳个人所得税,享受一次性奖金的政策;对该个人按规定只能享受一次全年一次性奖金的优惠算法。   例四:李某2013年1月工资5000,取得本企业发放的年终奖24000元,另取得兼职单位发放的年终奖6000元,无其它收入。   李某本企业年终奖(24000)部分应缴纳个人所得税计算:先将雇员当月内取得的全年一次性奖金,除以12个月,即:24000/12=2000元,   再按其商数确定适用税率为10%,速算扣除数为105.   李某本企业年终奖24000应缴纳个人所得税:   24000*10%-105=2295元。   李某取得的兼职单位发放6000元年终奖应合并到李某当月工资薪金中计算缴纳。如果兼职单位按发放年终奖计算个人所得税,代扣代缴了个人所得税6000*3%=180元。   李某在本企业取得工资5000元,本企业代扣代缴(5000-3500)*3%-=45元个人所得税。   年终汇算清缴,李某工资部分应缴纳个人所得税:(5000 6000-3500)*20%-555=945元。   由以上这些说明,用Python实现了下,只支持上面提到的1,2情况。 中间可能还有些错误存在,不过也先记录下:   print """ **************************************************************** These results just be suitable for: working on one company in a year and just get bonus once in a year. **************************************************************** """ def ab(your_salary, your_annual_bonus): ab_per_m = annual_bonus / 12 if ab_per_m <= 1500: ab_tax = annual_bonus * 3 / 100 - 0 if 1500 < ab_per_m <= 4500: ab_tax = annual_bonus * 10 / 100 - 105 if 4500 < ab_per_m...

安装使用virtualenv

LC 2015-12-18 Python

virtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够: 1. 在没有权限的情况下安装新套件 2. 不同应用可以使用不同的套件版本 3. 套件升级不影响其他应用 用类似“Windows下Python,setuptools,pip,virtualenv的安装”的方法在linux下安装了virtualenv。 其中有一段非常有用的话:“需要注意,当前irtualenv的版本是1.11,安装的时候如果不设定==1.10.1,默认会安装最新版本,而1.11版本的virtualenv是有问题的,安装1.11后,在创建环境的时候会失败,报错: setuptools pip failed with error code 1.这个问题是1.11的本身的问题,用1.10.1版本,没有这个问题,所以我们安装的时候需要明确版本1.10.1。”   这里记录一下用法: [root@lc ppy]# virtualenv vProject New python executable in vProject/bin/python Installing Setuptools..............................................................................................................................................................................................................................done. Installing Pip.....................................................................................................................................................................................................................................................................................................................................done. [root@lc ppy]# cd python_env/ [root@lc python_env]# ls bin  guessnumber.py  include  lib [root@lc python_env]# cd bin/ [root@lc bin]# ls activate  activate.csh  activate.fish  activate_this.py  easy_install  easy_install-2.7  pip  pip-2.7  python  python2  python2.7 [root@lc bin]# cd .. [root@lc python_env]# cd .. [root@lc ppy]# cd vProject/ [root@lc vProject]# source bin/activate  -- Comment:启动virtualenv虚拟环境 (vProject)[root@lc vProject]# deactivate -- Comment:退出virtualenv虚拟环境 [root@lc vProject]#   Just记录一下。 需要windows下安装方法的可移步“Windows下Python,setuptools,pip,virtualenv的安装”。

新手学Python-SSH登录

LC 2015-12-10 Python

python自动登录并执行命令: #!/usr/bin/env python # -*- coding: utf-8 -*- # filename: pexpect_ssh.py ''' Created on 2015-12-10 @author: LC ''' import pexpect if __name__ == '__main__': user = 'admin' ip = '192.168.0.1' mypassword = 'password' print user child = pexpect.spawn('ssh %s@%s' % (user,ip)) child.expect ('password:') child.sendline (mypassword) child.expect('$') child.sendline('sudo -s') child.expect (':') child.sendline (mypassword) child.expect('#') child.sendline('ls -la') child.expect('#') print child.before # Print the result...

新手学python-codecademy-Class-Practice step-by-step

LC 2015-11-25 Python

Practice step by step: Classes Make your own Car and learn how to driveCar()!     Class basics Classes can be very useful for storing complicated objects with their own methods and variables. Defining a class is much like defining a function, but we use the classkeyword instead. We also use the wordobject in parentheses because we want our classes to inherit the object class. This means that our class has all the properties of an object, which is the simplest, most basic class. Later we'll see that classes can inherit other, more complicated classes. An empty class would look like this: class ClassName(object):     # class statements go here   Instructions Define a new class named "Car"....

新手学python-codecademy-Class-Learn step-by-step

LC 2015-11-24 Python

Learn step-by-step: Why Use Classes? Python is an object-oriented programming language, which means it manipulates programming constructs called objects. You can think of an object as a single data structure that contains data as well as functions; functions of objects are calledmethods. For example, any time you call len("Eric") Python is checking to see whether the string object you passed it has a length, and if it does, it returns the value associated with that attribute. When you call my_dict.items() Python checks to see if my_dict has anitems() method (which all dictionaries have) and executes that method if it finds it. But what makes "Eric" a string andmy_dict a dictionary? The fact that they're instances...

新手学python-笨方法学python-ex35-分支和函数

LC 2015-11-15 Python

跟着笨方法学python个教程学习,边学边做习题边记录。 新手学python-笨方法学python-ex35-分支和函数 - 学习记录 课程内容: 你已经学会了 if 语句、函数、还有列表。现在你要练习扭转一下思维了。把下面的代码写下来,看你是否能弄懂它实现的是什么功能。 from sys import exit def gold_room(): print "This room is full of gold. How much do you take?" next = raw_input("> ") if "0" in next or "1" in next: how_much = int(next) else: dead("Man, learn to type a number.") if how_much < 50: print "Nice, you're not greedy, you win!" exit(0) ...

新手学python-笨方法学python-ex33-While 循环

LC 2015-11-14 Python

跟着笨方法学python个教程学习,边学边做习题边记录。 新手学python-笨方法学python-ex33-While 循环 - 学习记录 课程内容: 接下来是一个更在你意料之外的概念: while-loop``(while 循环)。``while-loop 会一直执行它下面的代码片段,直到它对应的布尔表达式为 False 时才会停下来。 等等,你还能跟得上这些术语吧?如果你的某一行是以 : (冒号, colon)结尾,那就意味着接下来的内容是一个新的代码片段,新的代码片段是需要被缩进的。只有将代码用这样的方式格式化,Python 才能知道你的目的。如果你不太明白这一点,就回去看看“if 语句”和“函数”的章节,直到你明白为止。 接下来的练习将训练你的大脑去阅读这些结构化的代码。这和我们将布尔表达式烧录到你的大脑中的过程有点类似。 回到 while 循环,它所作的和 if 语句类似,也是去检查一个布尔表达式的真假,不一样的是它下面的代码片段不是只被执行一次,而是执行完后再调回到 while 所在的位置,如此重复进行,直到 while 表达式为 False 为止。 While 循环有一个问题,那就是有时它会永不结束。如果你的目的是循环到宇宙毁灭为止,那这样也挺好的,不过其他的情况下你的循环总需要有一个结束点。 为了避免这样的问题,你需要遵循下面的规定: 1.尽量少用while-loop,大部分时候for-loop是更好的选择。 2.重复检查你的while语句,确定你测试的布尔表达式最终会变成False。 3.如果不确定,就在while-loog的结尾打印出你要测试的值。看看它的变化。 在这节练习中,你将通过上面的三样事情学会while-loop: i = 0 numbers= [] while i < 6: print "At the top i is %d" % i numbers.append(i) i = i + 1 print "Numbers now: ", numbers print "At the bottom i is %d" % i print "The numbers: " for num in numbers: print num     运行该程序: $python ex33.py At the top i is 0 Numbers now: [0] At the...

新手学python-笨方法学python-ex34-访问列表的元素

LC 2015-11-14 Python

跟着笨方法学python个教程学习,边学边做习题边记录。 新手学python-笨方法学python-ex34-访问列表的元素 - 学习记录 课程内容: 列表的用处很大,但只有你能访问里边的内容时它才能发挥出作用来。你已经学会了按顺序读出列表的内容,但如果你要得到第 5 个元素该怎么办呢?你需要知道如何访问列表中的元素。访问第一个元素的方法是这样的: animals = ['bear', 'tiger', 'penguin', 'zebra'] bear = animals[0] 你定义一个 animals 的列表,然后你用 0 来获取第一个元素?! 这是怎么回事啊?因为数学里边就是这样,所以 Python 的列表也是从 0 开始的。虽然看上去很奇怪,这样定义其实有它的好处,而且实际上设计成 0 或者 1 开头其实都可以, 最好的解释方式是将你平时使用数字的方式和程序员使用数字的方式做对比。 假设你在观看上面列表中的四种动物(['bear', 'tiger', 'penguin', 'zebra']) 的赛跑,而它们比赛的名词正好跟列表里的次序一样。这是一场很激动人心的比赛,因为这些动物没打算吃掉对方,而且比赛还真的举办起来了。结果你的朋友来晚了,他想知道谁赢了比赛,他会问你“嘿,谁是第 0 名”吗?不会的,他会问“嘿,谁是第 1 名?” 这是因为动物的次序是很重要的。没有第一个就没有第二个,没有第二个也没有第三个。第零个是不存在的,因为零的意思是什么都没有。“什么都没有”怎么赢比赛嘛,完全不合逻辑。这样的数字我们称之为“序数(ordinal number)”,因为它们表示的是事物的顺序。 而程序员不能用这种方式思考问题,因为他们可以从列表的任何一个位置取出一个元素来。对程序员来说,上述的列表更像是一叠卡片。如果他们想要 tiger,就抓它出来,如果想要zebra,也一样抓取出来。要随机地抓取列表里的内容,列表的每一个元素都应该有一个地址,或者一个 “index(索引)”,而最好的方式是使用以 0 开头的索引。相信我说的这一点吧,这种方式获取元素会更容易。这类的数字被称为“基数(cardinal number)”,它意味着你可以任意抓取元素,所以我们需要一个 0 号元素。 那么,这些知识对于你的列表操作有什么帮助呢?很简单,每次你对自己说“我要第 3 只动物”时,你需要将“序数”转换成“基数”,只要将前者减 1 就可以了。第 3 只动物的索引是 2,也就是 penguin。由于你一辈子都在跟序数打交道,所以你需要用这种方式来获得基数,只要减 1 就都搞定了。 记住: ordinal == 有序,以 1 开始;cardinal == 随机选取, 以 0 开始。 让我们练习一下。定义一个动物列表,然后跟着做后面的练习,你需要写出所指位置的动物名称。如果我用的是“1st, 2nd”等说法,那说明我用的是序数,所以你需要减去 1。如果我给你的是基数(0, 1, 2),你只要直接使用即可。 .. code-block:: python animals = [‘bear’, ‘python’, ‘peacock’, ‘kangaroo’, ‘whale’, ‘platypus’] 1.The animal at 1. 2.The 3rd animal. 3.The 1st animal. 4.The animal at 3. 5.The 5th animal. 6.The animal at 2. 7.The 6th animal. 8.The animal at 4. 对于上述每一条,以这样的格式写出一个完整的句子:“The 1st animal is at 0...

新手学python-笨方法学python-ex32-循环和列表

LC 2015-11-13 Python

跟着笨方法学python个教程学习,边学边做习题边记录。 新手学python-笨方法学Python-ex32-循环和列表 - 学习记录 课程内容: 现在你应该有能力写更有趣的程序处理了。如果你能一直跟得上,你应该已经看出将“if”和“布尔表达式”结合起来可以让程序作出一些智能化的事情。 然而,我们的程序还需要能很快地完成重复的事情,这节习题中我们将使用for-loop(for循环)来创建和打印出各种各样的列表。在做的过程中,你会逐渐明白它们是怎么回事。现在我不会告诉你,你需要自己找到答案。 在你开始使用for循环之前,你需要再某个位置存放循环的结果。最好的方法是使用列表(list),顾名思义,它就是一个按顺序存放东西的容器。列表并不复杂,你只是要学习一点新的语法。首先我们看看如何创建列表: hairs = ['brown', 'blond', 'red'] eyes = ['brown', 'blue', 'green'] weights = [1, 2, 3, 4] 你要做的是以[(左方括号)开头“打开”列表,然后写下你要放入列表的东西,以逗号给开,就跟函数的参数一样,最后你要用](右方括号)结束列表的定义。 然后Python接收这个列表以及里边所有的内容,将其赋给一个变量。 Warning 对于不会编程的人来说这是一个难点。习惯性思维告诉你的大脑大地是平的。记得上一个练习中的 if 语句嵌套吧,你可能觉得要理解它有些难度,因为生活中一般人不会去像这样的问题,但这样的问题在编程中几乎到处都是。你会看到一个函数调用另外一个包含 if 语句的函数,其中又有嵌套列表的列表。如果你看到这样的东西一时无法弄懂,就用纸笔记下来,手动分割下去,直到弄懂为止。 现在我们将使用循环创建一些列表,然后将它们打印出来。 the_count = [1, 2, 3, 4, 5] fruits = ['apples', 'oranges', 'pears', 'apricots'] change = [1, 'pennies', 2, 'dimes', 3, 'quarters'] # this first kind of for-loop goes through a list for number in the_count: print "This is count %d" % number # same as above for fruit in fruits: print "A fruit of type: %s" % fruit # also we can go through mixd lists too # notice we have to use %r sine we don't know...

新手学python-笨方法学python-ex29-如果(if)

LC 2015-11-12 Python

跟着笨方法学python个教程学习,边学边做习题边记录。 新手学python-笨方法学python-ex29-如果(if) - 学习记录 课程内容: 下面是你要写的作业,这段向你介绍了“if语句”。把这段输入进去,让它能正确执行。然后我们看看你是否有所收获。 people = 20 cats = 30 dogs = 15 if people < cats: print "Too many cats! The world is doomed!" if people > cats: print "No many cats! The world is saved!" if people < dogs: print "The world is drooled on!" if people > dogs: print "The world is dry!" dogs += 5 if people >= dogs: print "People are greater than or equal to dogs." if people <= dogs: print "People are less than or equal to dogs." if...

新手学python-笨方法学python-ex30-Else 和 If

LC 2015-11-12 Python

跟着笨方法学python个教程学习,边学边做习题边记录。 新手学python-笨方法学python-ex30-Else 和 If - 学习记录 课程内容: 前一习题中你写了一些 “if 语句(if-statements)”,并且试图猜出它们是什么,以及实现的是什么功能。在你继续学习之前,我给你解释一下上一节的加分习题的答案。上一节的加分习题你做过了吧,有没有? 1.你认为 if 对于它下一行的代码做了什么? If 语句为代码创建了一个所谓的“分支”,就跟 RPG 游戏中的情节分支一样。if 语句告诉你的脚本:“如果这个布尔表达式为真,就运行接下来的代码,否则就跳过这一段。” 2.为什么 if 语句的下一行需要 4 个空格的缩进? 行尾的冒号的作用是告诉 Python 接下来你要创建一个新的代码区段。这根你创建函数时的冒号是一个道理。 3.如果不缩进, 会发生什么事情? 如果你没有缩进,你应该会看到 Python 报错。Python 的规则里,只要一行以“冒号(colon)” : 结尾,它接下来的内容就应该有缩进。 4.把习题 27 中的其它布尔表达式放到 if语句 中会不会也可以运行呢?试一下。 可以。而且不管多复杂都可以,虽然写复杂的东西通常是一种不好的编程风格。 5.如果把变量 people, cats, 和 dogs 的初始值改掉, 会发生什么事情? 因为你比较的对象是数字,如果你把这些数字改掉的话,某些位置的 if 语句会被演绎为 True,而它下面的代码区段将被运行。你可以试着修改这些数字,然后在头脑里假想一下那一段代码会被运行。 把我的答案和你的答案比较一下,确认自己真正懂得代码“区段”的含义。这点对于你下一节的练习很重要,因为你将会写很多的 if 语句。 把这一段写下来,并让它运行起来: people = 30 cars = 40 buses = 15 if cars > people: print "We should take the cars." elif cars < people: print "We should not take the cars." else: print "We can't decide." if buses > cars: print "That's too many buses." elif buses <...

新手学python-笨方法学python-ex31-作出决定

LC 2015-11-12 Python

跟着笨方法学python个教程学习,边学边做习题边记录。 新手学python-笨方法学Python-ex31-作出决定 - 学习记录 课程内容: 这本书的上半部分你打印了一些东西,而且调用了函数,不过一切都是直线式进行的。你的脚本从最上面一行开始,一路运行到结束,但其中并没有决定程序流向的分支点。现在你已经学了 if, else, 和 elif ,你就可以开始创建包含条件判断的脚本了。 上一个脚本中你写了一系列的简单提问测试。这节的脚本中,你将需要向用户提问,依据用户的答案来做出决定。把这个Python脚本写下来,多多鼓捣一阵子,看看它的工作原理是什么。   print "You enter a dark room with two doors. Do you go through door #1 or door #2?" door = raw_input("> ") if door == "1": print "There's a giant bear here eating a cheese cake. What do you do?" print "1. Take the cake." print "2. Scream at the bear." bear = raw_input("> ") if bear == "1": print "The bear eats your...

新手学python-笨方法学python-ex27-记住逻辑关系

LC 2015-11-11 Python

跟着笨方法学python个教程学习,边学边做习题边记录。 新手学python-笨方法学python-ex27-记住逻辑关系 - 学习记录 课程内容: 到此为止你已经学会了读写文件,命令行处理,以及很多 Python 数学运算功能。今天,你将要开始学习逻辑了。你要学习的不是研究院里的高深逻辑理论,只是程序员每天都用到的让程序跑起来的基础逻辑知识。 学习逻辑之前你需要先记住一些东西。这个练习我要求你一个星期完成,不要擅自修改日程,就算你烦得不得了,也要坚持下去。这个练习会让你背下来一系列的逻辑表格,这会让你更容易地完成后面的习题。 需要事先警告你的是:这件事情一开始一点乐趣都没有,你会一开始就觉得它很无聊乏味,但它的目的是教你程序员必须的一个重要技能——一些重要的概念是必须记住的,一旦你明白了这些概念,你会获得相当的成就感,但是一开始你会觉得它们很难掌握,就跟和乌贼摔跤一样,而等到某一天,你会刷的一下豁然开朗。你会从这些基础的记忆学习中得到丰厚的回报。 这里告诉你一个记住某样东西,而不让自己抓狂的方法:在一整天里,每次记忆一小部分,把你最需要加强的部分标记起来。不要想着在两小时内连续不停地背诵,这不会有什么好的结果。不管你花多长时间,你的大脑也只会留住你在前 15 或者 30 分钟内看过的东西。 取而代之,你需要做的是创建一些索引卡片,卡片有两列内容,正面写下逻辑关系,反面写下答案。你需要做到的结果是:拿出一张卡片来,看到正面的表达式,例如 “True or False”,你可以立即说出背面的结果是 “True”!坚持练习,直到你能做到这一点为止。 一旦你能做到这一点了,接下来你需要每天晚上自己在笔记本上写一份真值表出来。不要只是抄写它们,试着默写真值表,如果发现哪里没记住的话,就飞快地撇一眼这里的答案。这样将训练你的大脑让它记住整个真值表。 不要在这上面花超过一周的时间,因为你在后面的应用过程中还会继续学习它们。 逻辑术语? 在 python 中我们会用到下面的术语(字符或者词汇)来定义事物的真(True)或者假(False)。计算机的逻辑就是在程序的某个位置检查这些字符或者变量组合在一起表达的结果是真是假。 and 与 or 或 not 非 != (not equal) 不等于 == (equal) 等于 >= (greater-than-equal) 大于等于 <= (less-than-equal) 小于等于 True 真 False 假 其实你已经见过这些字符了,但这些词汇你可能还没见过。这些词汇(and, or, not)和你期望的效果其实是一样的,跟英语里的意思一模一样。 真值表? 我们将使用这些字符来创建你需要记住的真值表。 NOT True? not False True not True False OR True? True or False True True or True True False or True True False or False False AND True? True and False False True and True True False and True False False and False False NOT OR True? not (True or False) False not (True or True) False not (False or True) False not (False or False) True NOT AND True? not (True and False) True not (True and True) False not (False and True) True not (False and False) True != True? 1 != 0 True 1 != 1 False 0 != 1 True 0 != 0 False == True? 1 == 0 False 1 == 1 True 0 == 1 False 0 == 0 True 现在使用这些表格创建你自己的卡片,再花一个星期慢慢记住它们。记住一点,这本书不会要求你成功或者失败,只要每天尽力去学,在尽力的基础上多花一点功夫就可以了。   至此,笨方法学python-ex27-记住逻辑关系,这一小节的学习结束了。

新手学python-笨方法学python-ex28-布尔表达式练习

LC 2015-11-11 Python

跟着笨方法学python个教程学习,边学边做习题边记录。 新手学python-笨方法学python-ex28-布尔表达式练习 - 学习记录 课程内容: 上一节你学到的逻辑组合的正式名称是“布尔逻辑表达式(boolean logic expression)”。在编程中,布尔逻辑可以说是无处不在。它们是计算机运算的基础和重要组成部分,掌握它们就跟学音乐掌握音阶一样重要。 在这节练习中,你将在 python 里使用到上节学到的逻辑表达式。先为下面的每一个逻辑问题写出你认为的答案,每一题的答案要么为 True 要么为 False。写完以后,你需要将python 运行起来,把这些逻辑语句输入进去,确认你写的答案是否正确。 True and True -->True False and True -->False 1 == 1 and 2 == 1 -->False "test" == "test" --True 1 == 1 or 2 != 1 -->True True and 1 == 1 -->True False and 0 != 0 -->False True or 1 == 1 -->True "test" == "testing" -->False 1 != 0 and 2 == 1 -->False "test" != "testing" -->True "test" == 1 -->False not (True and False) -->True not (1 == 1 and 0 != 1) -->False not (10 == 1 or 1000 == 1000) -->False not (1 != 10...

新手学python-笨方法学python-ex26-恭喜你,现在可以考试了!

LC 2015-11-10 Python

跟着笨方法学python个教程学习,边学边做习题边记录。 新手学python-笨方法学Python-ex26-恭喜你,现在可以考试了! - 学习记录 课程内容: 你已经差不多完成这本书的前半部分了,不过后半部分才是更有趣的。你将学到逻辑,并通过条件判断实现有用的功能。 在你继续学习之前,你有一道试题要做。这道试题很难,因为它需要你修正别人写的代码。当你成为程序员以后,你将需要经常面对别的程序员的代码,也许还有他们的傲慢态度,他们会经常说自己的代码是完美的。 这样的程序员是自以为是不在乎别人的蠢货。优秀的科学家会对他们自己的工作持怀疑态度,同样,优秀的程序员也会认为自己的代码总有出错的可能,他们会先假设是自己的代码有问题,然后用排除法清查所有可能是自己有问题的地方,最后才会得出“这是别人的错误”这样的结论。 在这节练习中,你将面对一个水平糟糕的程序员,并改好他的代码。我将习题 24 和 25 胡乱拷贝到了一个文件中,随机地删掉了一些字符,然后添加了一些错误进去。大部分的错误是Python 在执行时会告诉你的,还有一些算术错误是你要自己找出来的。再剩下来的就是格式和拼写错误了。 所有这些错误都是程序员很容易犯的,就算有经验的程序员也不例外。 你的任务是将此文件修改正确,用你所有的技能改进这个脚本。你可以先分析这个文件,或者你还可以把它像学期论文一样打印出来,修正里边的每一个缺陷,重复修正和运行的动作,直到这个脚本可以完美地运行起来。在整个过程中不要寻求帮助,如果你卡在某个地方无法进行下去,那就休息一会晚点再做。 就算你需要几天才能完成,也不要放弃,直到完全改对为止。 最后要说的是,这个练习的目的不是写程序,而是修正现有的程序,你需要访问下面的网站: http://learnpythonthehardway.org/book/exercise26.txt 从那里把代码复制粘贴过来,命名为 ex26.py,这也是本书唯一一处允许你复制粘贴的地方。 def break_words(stuff): """This function will break up words for us.""" words = stuff.split(' ') return words def sort_words(words): """Sorts the words.""" return sorted(words) def print_first_word(words) """Prints the first word after popping it off.""" word = words.poop(0) print word def print_last_word(words): """Prints the last word after popping it off.""" word = words.pop(-1 print word def sort_sentence(sentence): """Takes in a full sentence...

新手学python-笨方法学python-ex25-更多更多的练习

LC 2015-11-09 Python

跟着笨方法学Python个教程学习,边学边做习题边记录。 新手学python-笨方法学python-ex25-更多更多的练习 - 学习记录 课程内容: 我们将做一些关于函数和变量的练习,以确认你真正掌握了这些知识。这节练习对你来说可以说是一本道:写程序,逐行研究,弄懂它。 不过这节练习还是有些不同,你不需要运行它,取而代之,你需要将它导入到 python 里通过自己执行函数的方式运行。 def break_words(stuff): """This function will break up words for us.""" words = stuff.split(' ') return words def sort_words(words): """Sorts the words.""" return sorted(words) def print_first_word(words): """Prints the first word after popping it off.""" word = words.pop(0) print word def print_last_word(words): """Prints the last word after popping it off.""" word = words.pop(-1) print word def sort_sentence(sentence): """Takes in a full sentence...

新手学python-笨方法学python-ex24-更多练习

LC 2015-11-08 Python

跟着笨方法学python个教程学习,边学边做习题边记录。 新手学python-笨方法学python-ex24-更多练习 - 学习记录 课程内容: 你离这本书第一部分的结尾已经不远了,你应该已经具备了足够的 Python 基础知识,可以继续学习一些编程的原理了,但你应该做更多的练习。这个练习的内容比较长,它的目的是锻炼你的毅力,下一个习题也差不多是这样的,好好完成它们,做到完全正确,记得仔细检查。 print "Let's practice everything." print 'You\'d need to know \'bout escapes with \\ that do \n newlines and \t tabs.' poem = """ \tThe lovely world with logic so firmly planted cannot discern \n the needs of love nor comprehend passion from intuition and requires an explanation \n\t\twhere there is none. """ print "--------------" print poem print "--------------" five = 10 -2 + 3 - 6 print "This should be five: %s" % five def secret_formula(started): jelly_beans = started * 500 jars = jelly_beans / 1000 crates = jars / 100 return jelly_beans, jars, crates start_point...

新手学python-笨方法学python-ex21-函数可以返回东西

LC 2015-11-07 Python

跟着笨方法学python个教程学习,边学边做习题边记录。 新手学python-笨方法学python-ex21-函数可以返回东西 - 学习记录 课程内容: 你已经学过使用 = 给变量命名, 以及将变量定义为某个数字或者字符串。接下来我们将让你见证更多奇迹。 我们要演示给你的是如何使用 = 以及一个新的python词汇return来将变量设置为“一个函数的值”。 有一点你需要及其注意,不过我们暂且不讲,先撰写下面的脚本吧: def add(a, b): print "ADDIND %d + %d" % (a, b) return a + b def subtract(a, b): print "SUBTRACTING %d - %d" % (a, b) return a - b def multiply(a, b): print "MULTIPLYING %d * %d" % (a, b) return a * b def divide(a, b): print "DIVIDING %d / %d" % (a, b) return a / b print "Let's do some math with just functions!" age = add(30, 5) height = subtract(78,...

新手学python-笨方法学python-ex20-函数和文件

LC 2015-11-06 Python

跟着笨方法学python个教程学习,边学边做习题边记录。 新手学python-笨方法学python-ex20-函数和文件 - 学习记录 课程内容: 回忆一下函数的要点,然后一边做这节练习,一边注意一下函数和文件是如何在一起协作发挥作用的。 from sys import argv script, input_file = argv def print_all(f): print f.read() def rewind(f): f.seek(0) def print_a_line(line_count, f): print line_count, f.readline() current_file = open(input_file) print "First let's print the whole file:\n" print_all(current_file) print "Now let's rewind, kind of like a tape." rewind(current_file) print "Let's print three lines:" current_line = 1 print_a_line(current_line, current_file) current_line = current_line + 1 print_a_line(current_line, current_file) current_line = current_line + 1 print_a_line(current_line, current_file) 特别注意一下,每次运行 print_a_line 时,我们是怎样传递当前的行号信息的。 运行该Python程序: $python ex20.py test.txt First let's print the whole file: To all the people out there. I say I don't like my hair. I need to shave it off. Now let's rewind, kind of like a tape. Let's print three lines: 1 To all the people...

新手学python-笨方法学python-ex19-函数和变量

LC 2015-11-05 Python

跟着笨方法学python个教程学习,边学边做习题边记录。 新手学python-笨方法学Python-ex19-函数和变量 - 学习记录 课程内容: 函数这个概念也许承载了太多的信息量,不过别担心。只要坚持做这些练习,对照上个练习中的检查点检查一遍这次的联系,你最终会明白这些内容的。 有一个你可能没有注意到的细节,我们现在强调一下:函数里边的变量和脚本里边的变量之间是没有连接的。下面这个练习可以让你对这一点有更多的思考: def cheese_and_crackers(cheese_count, boxes_of_crackers): print "You have %d cheeses!" % cheese_count print "You have %d boxes of crackers!" % boxes_of_crackers print "Man that's enough for a party!" print "Get a blanket.\n" print "We can just give the function numbers directly:" cheese_and_crackers(20, 30) print "Or, we can use variables from our script:" amount_of_cheese = 10 amount_of_crackers = 50 cheese_and_crackers(amount_of_cheese, amount_of_crackers) print "We can even do math inside too:" cheese_and_crackers(10 + 20, 5 + 6) print "And we can combine the two, variables and math:" cheese_and_crackers(amount_of_cheese + 100, amount_of_crackers + 1000) 通过这个练习,你看到我们给我们的函数 cheese_and_crackers 很多的参数,然后在函数里把它们打印出来。我们可以在函数里用变量名,我们可以在函数里做运算,我们甚至可以将变量和运算结合起来。 从一方面来说,函数的参数和我们的生成变量时用的 = 赋值符类似。事实上,如果一个物件你可以用...

新手学python-笨方法学python-ex18-命名、变量、代码、函数

LC 2015-11-04 Python

跟着笨方法学python个教程学习,边学边做习题边记录。 新手学python-笨方法学python-ex18-命名、变量、代码、函数 - 学习记录 课程内容: 标题包含的内容够多的吧? 接下来我要教你“函数(function)”了!咚咚锵!说到函数,不一样的人会对它又不一样的理解和使用方法,不过我只会教你现在能用的最简单的使用方式。 函数可以做三样事情:  1.它们给代码片段命名,就跟“变量”给字符串和数字命名一样。  2.它们可以接受参数,就跟你的脚本接受argv一样  3.通过使用#1和#2,它们可以让你创建“微型脚本”或者“小命令”   你可以使用def新建函数。我将让你创建四个不同的函数,它们工作起来和你的脚本一样。然后我会演示给你各个函数之间的关系。 # this one is like your scripts with argv def print_two(*args): arg1, arg2 = args print "arg1: %r, arg2: %r" % (arg1, arg2) # ok, that *args is actually pointless, we can just do this def print_two_again(arg1, arg2): print "arg1: %r, arg2: %r" % (arg1, arg2) # this is just take one argument def print_one(arg1): print "arg1: %r" % arg1 # this on takes no arguments def print_none(): print "I got nothing." print_two("Zed","Shaw") print_two_again("Zed","Shaw") print_one("First!") print_none()   让我们把你的第一个函数print_two拆解一下,这个函数和你写脚本的方式差不多,因此你看上去应该会觉得比较眼熟:     1.首先我们告诉Python创建一个函数,我们使用到的命令是def,也就是“定义(define)”的意思。   2.紧接着def的是函数的名称。本例中它的名称是“print_two”,但是名字可以随便取,就叫“peanuts”也没关系。但最好函数的名称能够体现出函数的功能来。   3.然后我们告诉函数我们需要*args(asterisk args),这和脚本的argv非常相似,参数必须放在圆括号()中才能正常工作。   4.接着我们用冒号: 结束本行,然后开始下一行缩进。   5.冒号以下,使用4个空格缩进的行都是属于print_two这个函数的内容。其中第一行的作用是将参数解包,这和脚本参数解包的原理差不多。   6.为了演示它的工作原理,我们把解包后的每个参数都打印出来,这和我们在之前脚本练习中所作的类似。   函数print_two的问题是:它并不是创建函数最简单的方法。在Python函数中我们可以跳过整个参数解包的过程。直接使用()里边的名称作为变量名。这就是print_two_again实现的功能。 接下来的例子是print_one,它向你演示了函数如何接受单个参数。 最后一个例子是print_none,它向你演示了函数可以不接受任何参数。 Warning 如果你不太能看懂上面的内容也别气馁。后面我们还有更多的练习向你展示如何创建和使用函数。现在你只要把函数理解成“迷你脚本”就可以了。 运行上面的脚本: $python...

新手学python-笨方法学python-ex17-更多文件操作

LC 2015-11-03 Python

跟着笨方法学python个教程学习,边学边做习题边记录。 新手学python-笨方法学python-ex17-更多文件操作 - 学习记录 课程内容: 现在让我们再学几种文件操作。我们将编写一个Python脚本,将一个文件中的内容拷贝到另外一个文件中。这个脚本很短,不过它会让你对于文件操作有更多的了解。 from sys import argv from os.path import exists script, from_file, to_file = argv print "Copying from %s to %s" % (from_file, to_file) #we could do these two on one line too, how? input = open(from_file) indata = input.read() print "The input file is %d bytes long" % len(indata) print "Does the output file exist? %r" % exists(to_file) print "Ready, hit RETURN to continue, CTRL-C to abort." raw_input() output = open(to_file, 'w') output.write(indata) print "Alright, all done." output.close() input.close()   你应该很快注意到了我们import了又一个很好用的命令exists。 这个命令将文件名字符串作为参数,如果文件存在的话,它将返回True,否则将返回False。在本书的下半部分,我们将使用这个函数做很多的事情,不过现在你应该学会怎样通过import调用它。 通过使用import,你可以在自己的代码中直接使用其他更厉害的程序员写的大量免费代码,这样你就不需要重写一遍了。 运行上面的程序:     C:\Documents and Settings\Administrator>python ex17.py ex17-sample.txt copied.txt We are going to copy ex17-sample.txt to copied.txt The input file is 80 bytes long. Does the output file exist? False. Ready, hit RETURN to continue, or hit CTRL-C to abort. ? Allright, all done. $ 我们再看看copied.txt这个文件的内容,跟ex17-sample.txt的一样: To...

新手学python-笨方法学python-ex16-读写文件

LC 2015-11-02 Python

跟着笨方法学python个教程学习,边学边做习题边记录。 新手学python-笨方法学Python-ex16-读写文件件 - 学习记录 课程内容: 了解各种文件相关的命令(方法/函数): close - 关闭文件。跟你编辑器的 文件->保存.. 一个意思。 read - 读取文件内容。你可以把结果赋给一个变量。 readline - 读取文本文件中的一行。 truncate - 清空文件,请小心使用该命令。 write(stuff) - 将stuff写入文件。 这是你现在该知道的重要命令。有些命令需要接受参数,这对我们并不重要。你只要记住write的用法就可以了。write需要接收一个字符串作为参数,从而将该字符串写入文件。 让我们来使用这些命令做一个简单的文本编辑器吧: from sys import argv script, filename = argv print "We're going to erase %r." % filename print "If you don't want that, hit CTRL-C(^C)." print "If you do want that, hit RETURN." raw_input("?") print "Opening the file..." target = open(filename, 'w') print "Truncating the file. Goodbye!" target.truncate() print "Now I'm going to ask you for three lines." line1 = raw_input("line 1: ") line2 = raw_input("line 2: ") line3 = raw_input("line 3: ") print "I'm going to write these to the file." target.write(line1) target.write("\n") target.write(line2) target.write("\n") target.write(line3) target.write("\n") print "And finally,we close it." target.close() 这个文件是够大的,大概是你键入过的最大的文件。所以慢慢来,仔细检查,让它能运行起来。 有一个小技巧可以让你的脚本一部分一部分地运行起来。先写1-8行,让它运行起来;再多运行5行,再接着多运行几行,一次类推,直到整个脚本运行起来为止。 运行该脚本: $python ex16.py ex16-sample.txt We're going to erase 'ex16-sample.txt'. If you don't want that, hit CTRL-C(^C). If you do want...

新手学python-笨方法学python-ex15-读取文件

LC 2015-10-31 Python

跟着笨方法学python个教程学习,边学边做习题边记录。 新手学python-笨方法学python-ex15-读取文件 - 学习记录 上一小节的加分题3想不出来argv和raw_input怎么结合使用,就分开使用了。刚好这一小节学到,真好。 本小节学习内容: 你已经学过了 raw_input 和 argv,这些是你开始学习读取文件的必备基础。你可能需要多多实验才能明白它的工作原理,所以你要细心做练习,并且仔细检查结果。处理文件需要非常仔细,如果不仔细的话,你可能会吧有用的文件弄坏或者清空。导致前功尽弃。 这节练习涉及到写两个文件。一个正常的 ex15.py 文件,另外一个是 ex15_sample.txt,第二个文件并不是脚本,而是供你的脚本读取的文本文件。以下是后者的内容: This is stuff I typed into a file. It is really cool stuff. Lots and lots of fun to have in here. 我们要做的是把该文件用我们的脚本“打开(open)”,然后打印出来。然而把文件名ex15_sample.txt 写死(hardcode)在代码中不是一个好主意,这些信息应该是用户输入的才对。如果我们碰到其他文件要处理,写死的文件名就会给你带来麻烦了。我们的解决方案是使用 argv 和 raw_input 来从用户获取信息,从而知道哪些文件该被处理。 from sys import argv script, filename = argv txt = open(filename) print "Here's your file %r:" % filename print txt.read() print "Type the filename again:" file_again = raw_input("> ") txt_again = open(file_again) print txt_again.read()   这个脚本中有一些新奇的玩意,我们来快速地过一遍: 代码的 1-3 行使用 argv 来获取文件名,这个你应该已经熟悉了。接下来第 5 行我们看到 open 这个新命令。现在请在命令行运行 pydoc open 来读读它的说明。你可以看到它和你自己的脚本、或者 raw_input 命令类似,它会接受一个参数,并且返回一个值,你可以将这个值赋予一个变量。这就是你打开文件的过程。 第 7 行我们打印了一小行,但在第 8 行我们看到了新奇的东西。我们在 txt 上调用了一个函数。你从 open 获得的东西是一个 file (文件),文件本身也支持一些命令。它接受命令的方式是使用句点 . (英文称作 dot 或者 period),紧跟着你的命令,然后是类似 open 和 raw_input 一样的参数。不同点是:当你说 txt.read 时,你的意思其实是:“嘿 txt!执行你的 read 命令,无需任何参数!” 脚本剩下的部分基本差不多,不过我就把剩下的分析作为加分习题留给你自己了。 你应该看到的结果: 我的脚本叫 “ex15_sample.txt”,以下是执行结果: $ python ex15.py ex15_sample.txt Here's...

新手学python-笨方法学python-ex14-提示和传递

LC 2015-10-30 Python

跟着笨方法学Python个教程学习,边学边做习题边记录。 新手学python-笨方法学python-ex14-提示和传递 - 学习记录 上一小节的加分题3想不出来argv和raw_input怎么结合使用,就分开使用了。刚好这一小节学到,真好。 本小节学习内容: 让我们使用argv和raw_input一起来向用户提一些特别的问题。下一节习题你会学习如何读写文件,这节练习是下节的基础。 这道练习题里我们将略微不同的方法使用raw_input,让它打出一个简单的>作为提示符。这和一些游戏中的方式类似,例如Zork或者Adventure这两款游戏。 from sys import argv script, user_name = argv prompt = '>' print "Hi %s,I'm the %s script." %(user_name, script) print "I'd like to ask you a few questions." print "Do you like me %s?" % user_name likes = raw_input(prompt) print "Where do you live %s?" % user_name lives = raw_input(prompt) print "What kind of computer do you have?" computer = raw_input(prompt) print """ Alright, so you said %r about liking me. You live in %r. Not sure where that is. And you have a %r computer. Nice. """ %(likes, lives, computer)   我们将用户提示符设置为变量 prompt,这样我们就不需要在每次用到raw_input的时候重复输入提示用户的字符了。而且如果你要将提示符修改成别的字串,你只需要修改一个位置就可以了。 非常顺手吧。 执行这个脚本,我们将看到结果: $python ex14.py Zed Hi Zed,I'm the ex14.py script. I'd like to ask you a few questions. Do you like me Zed? >yes Where do you live Zed? >America What...

新手学python-笨方法学python-ex13-参数、解包和变量

LC 2015-10-29 Python

跟着笨方法学python个教程学习,边学变做习题边记录。 新手学python-笨方法学python-ex13-参数、解包和变量 - 学习记录 本小节学习内容: 在这节练习中,我们将讲到另外一种将变量传递给脚本的方法(所谓脚本,就是你写的.py程序)。 你已经知道,如果要运行ex13.py,只要在命令行运行python ex13.py就可以了。 这句命令中ex13.py部分就是所谓的“参数(argument)”,我们现在要做的就是写一个可以接受参数的脚本。 将下面的程序写下来,后面你将看到详细解释。 from sys import argv script, first, second, third = argv print "The script is called:", script print "Your first variable is:", first print "Your second variable is:", second print "Your third variable is:", third 在第一行我们有一个“import”语句。这是你将python的功能引入你的脚本的方法。 Python不会一下子将它所有的功能给你,而是让你需要什么就调用什么。 这样可以让你的程序保持精简,而后面的程序员看到你的代码的时候,这些“import”可以作为提示,让他们明白你的代码用到了哪些功能。 argv是所谓的“参数变量(argument variable)”,是一个非常标准的变成术语。在其他的编程语言里你也可以看到它。 这个变量包含了你传递给Python的参数。通过后面的练习你将对它有更多的了解。 第3行讲argv“解包(unpack)”,与其将所有的参数放到同一个变量下面,我们将每个参数赋予一个变量名:script,first,second,以及third。 这样看上去有些奇怪,不过“解包”可能是最好的描述方式了。它的含义很简单:“把argv中的东西解包,将所有的参数一次赋予左边的变量名”。 等一下!“功能”还有另外一个名字 前面我们使用import让你的程序实现更多的功能,但实际上没人把import称为“功能”。我希望你可以在没接触到正式术语的时候就弄懂它的功能。 在继续下去之前,你需要知道它们真正的名称:模组(modules)。 从现在开始我们将把这些我们导入(import)进来的功能称作模组。你将看到类似这样的说法:“你需要把sys模组import进来。”也有人将它们称作“库(libraries)”,不过我们还是叫它们模组吧。 跟着课程学习: 输入不同的参数运行上面的脚本试试看结果: $python ex13.py Traceback (most recent call last): File "ex13.py", line 3, in <module> script, first, second, third = argv ValueError: need more than 1 value to unpack $ $python ex13.py Traceback (most recent call last): File "ex13.py", line 3, in <module> script, first, second, third = argv ValueError: need more than 1 value to unpack $python ex13.py 1st Traceback (most recent call last): File "ex13.py", line 3,...

新手学python-笨方法学python-ex12-提示别人

LC 2015-10-28 Python

跟着笨方法学python个教程学习,边学边做习题边记录。 新手学Python-笨方法学python-ex12-提示别人 - 学习记录 课程内容: 当你键入 raw_input() 的时候,你需要键入 ( 和 ) 也就是“括号(parenthesis)”。这和你格式化输出两个以上变量时的情况有点类似,比如说 "%s %s" % (x, y) 里边就有括号。对于 raw_input 而言,你还可以让它显示出一个提示,从而告诉别人应该输入什么东西。你可以在 () 之间放入一个你想要作为提示的字符串,如下所示: y = raw_input("Name? ") 这句话会用 “Name?” 提示用户,然后将用户输入的结果赋值给变量 y。这就是我们提问用户并且得到答案的方式。 也就是说,我们的上一个练习可以使用 raw_input 重写一次。所有的提示都可以通过 raw_input 实现。 跟着课程练习: [root@lc test]# vi ex12.py age = raw_input("How old are you? ") height = raw_input("How tall are you? ") weight = raw_input("How much do you weigh? ") print "So, you're %r old, %r tall and %r heavy." % (age, height, weight) "ex12.py" 5L, 198C written [root@lc test]# 执行该脚本: [root@lc test]# python ex12.py How old are you? 35 How tall are you? 6'2" How much do you weigh? 180lbs So, you're '35' old, '6\'2"' tall and '180lbs' heavy. [root@lc test]# 加分习题 1.在命令行界面下运行你的程序,然后在命令行输入 pydoc raw_input...

新手学python-笨方法学python-ex11-提问

LC 2015-10-28 Python

跟着笨方法学python个教程学习,边学边做习题边记录。 新手学python-笨方法学Python-ex11-提问 - 学习记录 课程内容: 我已经出过很多打印相关的练习,让你习惯写简单的东西,但简单的东西都有点无聊,现在该跟上脚步了。我们现在要做的是把数据读到你的程序里边去。这可能对你有点难度,你可能一下子不明白,不过你需要相信我,无论如何把习题做了再说。只要做几个练习你就明白了。 一般软件做的事情主要就是下面几条: 1.接受人的输入。 2.改变输入。 3.打印出改变了的输入。 到目前为止你只做了打印,但还不会接受或者修改人的输入。你也许还不知道“输入(input)”是什么意思。所以闲话少说,我们还是开始做点练习看你能不能明白。下一个习题里边我们会给你更多的解释。 跟着课程练习: [root@lc test]# vi ex11.py print "How old are you?", age = raw_input() print "How tall are you?", height = raw_input() print "How much do you weigh?", weight = raw_input() print "So, you're %r old, %r tall and %r heavy." %(age, height, weight) "ex11.py" 8L, 218C written [root@lc test]# 执行该程序: [root@lc test]# python ex11.py How old are you? 35 How tall are you? 6'2" How much do you weigh? 180lbs So, you're '35' old, '6\'2"' tall and '180lbs' heavy. [root@lc test]# 加分习题 1.上网查一下 Python 的 raw_input 实现的是什么功能。 使用input和raw_input都可以读取控制台的输入,但是input和raw_input在处理数字时是有区别的 当输入为纯数字时: input返回的是数值类型,如int,float raw_inpout返回的是字符串类型,string类型 输入字符串为表达式 input会计算在字符串中的数字表达式,而raw_input不会。 如输入“57 + 3”: input会得到整数60 raw_input会得到字符串”57 + 3” 2.你能找到它的别的用法吗?测试一下你上网搜索到的例子。 print "Hello, ",name = raw_input() 3.用类似的格式再写一段,把问题改成你自己的问题。 [root@lc test]# vi ex11-3.py print "What's the color...

新手学python-笨方法学python-ex10-what's that

LC 2015-10-28 Python

跟着笨方法学python个教程学习,边学边做习题边记录。 新手学python-笨方法学python-ex10-what's that - 学习记录 课程内容: 在习题 9 中我你接触了一些新东西。我让你看到两种让字符串扩展到多行的方法。第一种方法是在月份之间用 \n (back-slash n )隔开。这两个字符的作用是在该位置上放入一个“新行(new line)”字符。 使用反斜杠 \ (back-slash) 可以将难打印出来的字符放到字符串。针对不同的符号有很多这样的所谓“转义序列(escape sequences)”,但有一个特殊的转义序列,就是 双反斜杠(double back-slash) \\ 。这两个字符组合会打印出一个反斜杠来。接下来我们做几个练习,然后你就知道这些转义序列的意义了。 另外一种重要的转义序列是用来将单引号 ' 和双引号 " 转义。想象你有一个用双引号引用起来的字符串,你想要在字符串的内容里再添加一组双引号进去,比如你想说"I "understand" joe.",Python 就会认为 "understand" 前后的两个引号是字符串的边界,从而把字符串弄错。你需要一种方法告诉 python 字符串里边的双引号不是真正的双引号。 要解决这个问题,你需要将双引号和单引号转义,让 Python 将引号也包含到字符串里边去。这里有一个例子: "I am 6'2\" tall." # 将字符串中的双引号转义 'I am 6\'2" tall.' # 将字符串种的单引号转义 第二种方法是使用“三引号(triple-quotes)”,也就是 """,你可以在一组三引号之间放入任意多行的文字。接下来你将看到用法。 跟着课程练习: [root@lc test]# vi ex10.py tabby_cat = "\tI'm tabbed in." persian_cat = "I'm split\non a line." backslash_cat = "I'm \\ a \\ cat." fat_cat = """ I'll do a list: \t* Cat food \t* Fishies \t* Catnip\n\t* Grass """ print tabby_cat print persian_cat print backslash_cat print fat_cat "ex10.py" 15L, 255C written [root@lc test]#   执行该程序得到以下结果: [root@lc test]# python ex10.py I'm tabbed in. I'm split on a line. I'm...

新手学python-笨方法学python-ex9-打印打印打印

LC 2015-10-28 Python

跟着笨方法学Python个教程学习,边学边做习题边记录。 新手学python-笨方法学python-ex9-打印打印打印 - 学习记录 跟着课程练习: [root@lc test]# vi ex9.py # Here's some new strange stuff, remember bype it exactly. days = "Mon Tue Wed The Fri Sat Sun" months = "Jan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug" print "Here are the days: ", days print "Here are the months: ", months print """ There's something going on here. With the three double-quotes. We'll be able to type as much as we like. Even 4 lines if we want, or 5, or 6. """ "ex9.py" 14L, 377C written [root@lc test]# 执行该程序 [root@lc test]# python ex9.py Here are the days: Mon Tue Wed The Fri Sat Sun Here are the months: Jan Feb Mar Apr May Jun Jul Aug There's something going on here. With the three double-quotes. We'll be able to type...

新手学python-笨方法学python-ex8-打印打印

LC 2015-10-28 Python

跟着笨方法学python个教程学习,边学边做习题边记录。 新手学python-笨方法学python-ex8-打印打印 - 学习记录 跟着课程练习: [root@lc test]# vi ex8.py formatter = "%r %r %r %r" print formatter % (1, 2, 3, 4) print formatter % ("one", "two", "three", "four") print formatter % (True, False, False, True) print formatter % (formatter, formatter, formatter, formatter) print formatter % ( "I had this thing.", "That you could type up right.", "But it didn't sing.", "So I said goodnight." ) "ex8.py" 12L, 354C written [root@lc test]#   执行该程序: [root@lc test]# python ex8.py 1 2 3 4 'one' 'two' 'three' 'four' True False False True '%r %r %r %r' '%r %r %r %r' '%r %r %r %r' '%r %r...

新手学python-笨方法学python-ex7-更多打印

LC 2015-10-28 Python

跟着笨方法学Python个教程学习,边学边做习题边记录。 新手学python-笨方法学python-ex7-更多打印 - 学习记录 跟着课程练习: [root@lc test]# vi ex7.py print "Mary had a little lamb." print "Its fleece was white as %s." % 'snow' print "And everywhere that Mary went." print "." * 10 # what'd that do? end1 = "C" end2 = "h" end3 = "e" end4 = "e" end5 = "s" end6 = "e" end7 = "B" end8 = "u" end9 = "r" end10 = "g" end11 = "e" end12 = "r" # watch that comma at the end. try removing it to see what happens print end1 + end2 + end3 + end4 + end5 + end6, print end7 + end8 + end9 + end10 + end11 + end12 "ex7.py" 21L, 449C written [root@lc test]# 运行该程序: [root@lc test]# python ex7.py Mary...

新手学python-笨方法学python-ex6-字符串(string)和文本

LC 2015-10-28 Python

写给某人:有一位同学天天在我耳边念叨Python语言如何如何好(请恕我词穷不知如何复述那个如何如何到底是有多如何如何),所以下定决心要从头开始学习Python了。写代码一直是我的软肋,希望这次能坚持学习,边学边记。 跟着笨方法学Python个教程学习,边学变做习题边记录。 新手学python-笨方法学python-ex6-字符串(string)和文本 - 学习记录 本小节学习内容: 虽然你已经在程序中写过字符串了,你还没学过它们的用处。在这章习题中我们将使用复杂的字符串来建立一系列的变量,从中你将学到它们的用途。首先我们解释一下字符串是什么 东西。 字符串通常是指你想要展示给别人的、或者是你想要从程序里“导出”的一小段字符。Python 可以通过文本里的双引号 " 或者单引号 ' 识别出字符串来。这在你以前的 print 练习中你已经见过很多次了。如果你把单引号或者双引号括起来的文本放到 print 后面,它们就会被 python 打印出来。 字符串可以包含格式化字符 %s,这个你之前也见过的。你只要将格式化的变量放到字符串中,再紧跟着一个百分号 % (percent),再紧跟着变量名即可。唯一要注意的地方,是如果你想要在字符串中通过格式化字符放入多个变量的时候,你需要将变量放到 ( ) 圆括号(parenthesis)中,而且变量之间用 , 逗号(comma)隔开。就像你逛商店说“我要买牛奶、面包、鸡蛋、八宝粥”一样,只不过程序员说的是”(milk, eggs, bread, soup)”。 我们将键入大量的字符串、变量、和格式化字符,并且将它们打印出来。我们还将练习使用简写的变量名。程序员喜欢使用恼人的难度的简写来节约打字时间,所以我们现在就提早学会这个,这样你就能读懂并且写出这些东西了。 跟着课程学习: [root@lc test]# vi ex6.py x = "There are %d types of people." % 10 binary = "binary" do_not = "don't" y = "Those who know %s and those who %s." % (binary, do_not) print x print y print "I said: %r." % x print "I said: '%s'." % y hilarious = False joke_evaluation = "Isn't that joke so funny?! %r" print joke_evaluation % hilarious w = "This is the left side of..." e = "a string with a right side." print w + e "ex6.py" 21L, 392C written [root@lc test]#...

新手学python-笨方法学python-ex5-更多的变量和打印

LC 2015-10-28 Python

写给某人:有一位同学天天在我耳边念叨Python语言如何如何好(请恕我词穷不知如何复述那个如何如何到底是有多如何如何),所以下定决心要从头开始学习Python了。写代码一直是我的软肋,希望这次能坚持学习,边学边记。 跟着笨方法学python个教程学习,边学变做习题边记录。 笨方法学英语-ex5-更多的变量和打印 - 学习记录 教程说明: 我们现在要键入更多的变量并且把它们打印出来。这次我们将使用一个叫“格式化字符串(format string)”的东西. 每一次你使用 " 把一些文本引用起来,你就建立了一个字符串。 字符串是程序将信息展示给人的方式。你可以打印它们,可以将它们写入文件,还可以将它们发送给网站服务器,很多事情都是通过字符串交流实现的。 字符串是非常好用的东西,所以再这个练习中你将学会如何创建包含变量内容的字符串。使用专门的格式和语法把变量的内容放到字符串里,相当于来告诉 Python :“嘿,这是一个格式化字符串,把这些变量放到那几个位置。” 跟着练习: [root@lc test]# vi ex5.py my_name = 'Zed A. Shaw' my_age = 35 # not a lie my_height = 74 # inches my_weight = 180 # lbs my_eyes = 'Blue' my_teeth = 'White' my_hair = 'Brown' print "Let's talk about %s." % my_name print "He's %d inches tall." % my_height print "He's %d pounds heavy." % my_weight print "Actually that's not too heavy." print "He's got %s eyes and %s hair." %(my_eyes, my_hair) print "His teeth are usually %s depending on the coffee." % my_teeth # this line is tricky,try to get it exactly right print "If I add %d, %d, and %d I get %d."...

新手学python-笨方法学python-ex4-变量variable和命名

LC 2015-10-27 Python

写给某人:有一位同学天天在我耳边念叨Python语言如何如何好(请恕我词穷不知如何复述那个如何如何到底是有多如何如何),所以下定决心要从头开始学习Python了。写代码一直是我的软肋,希望这次能坚持学习,边学边记。 跟着笨方法学python个教程学习,边学变做习题边记录。 笨方法学英语-ex4-变量(variable)和命名 - 学习记录 跟着练习: [root@lc test]# vi ex4.py cars = 100 space_in_a_cat = 4.0 drivers = 30 passengers = 90 cars_not_driven = cars - drivers cars_driven = drivers carpool_capacity = cars_driven * space_in_a_car average_passengers_per_car = passengers / cars_driven print "There are", cars, "cars available." print "There are only", drivers, "drivers available." print "There will be", cars_not_driven, "empty cars today." print "We can transport", carpool_capacity, "people today." print "We have", passengers, "to carpool today." print "We need to put about", average_passengers_per_car, "in each car." "ex4.py" 15L, 558C written [root@lc test]# 运行该程序: [root@lc test]# python ex4.py Traceback (most recent call last): File "ex4.py", line 7, in <module> carpool_capacity = cars_driven * space_in_a_car NameError: name 'space_in_a_car' is not defined [root@lc...

新手学python-笨方法学Python-ex3-数字和数字运算

LC 2015-10-27 Python

写给某人:有一位同学天天在我耳边念叨Python语言如何如何好(请恕我词穷不知如何复述那个如何如何到底是有多如何如何),所以下定决心要从头开始学习Python了。写代码一直是我的软肋,希望这次能坚持学习,边学边记。 跟着笨方法学python个教程学习,边学变做习题边记录。 笨方法学英语-ex3-数字和数字运算 - 学习记录 数学运算符号: + plus 加号 - minus 减号 / slash 斜杠 * asterisk 星号 % percent 百分号 < less-than 小于号 > greater-than 大于号 <= less-than-equal 小于等于号 >= greater-than-equal 大于等于号 照着教程输入: [root@lc test]# vi ex3.py print "I will now count my chickens:" print "Hens", 25 + 30 / 6 print "Roosters", 100 - 25 * 3 % 4 print "Now I will count the eggs:" print 3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6 print "Is it true that 3 + 2 < 5 - 7?" print 3 + 2 < 5 - 7 print "What is 3 + 2?", 3 + 2 print "What is 5 - 7?" 5...

新手学python-笨方法学python-ex2-注释和#号

LC 2015-10-27 Python

写给某人:有一位同学天天在我耳边念叨Python语言如何如何好(请恕我词穷不知如何复述那个如何如何到底是有多如何如何),所以下定决心要从头开始学习Python了。写代码一直是我的软肋,希望这次能坚持学习,边学边记。 跟着笨方法学python个教程学习,边学变做习题边记录。 笨方法学英语-ex2-注释和#号 - 学习记录 [root@lc test]# vi ex2.py # A comment, this is so you can read your program later. # Anything after the # is ignored by python. print "I could have code like this." # and the comment after is ignored # You can also use a comment to "disable" or comment out a piece od code: # print "This won't run." print "This will run." "ex2.py" 9L, 300C written [root@lc test]# 执行该程序,得到以下结果: [root@lc test]# python ex2.py I could have code like this. This will run. [root@lc test]# 弄清楚”#”符号的作用。而且记住它的名字。(中文为井号,英文为 octothorpe 或者 pound character)。

新手学python-笨方法学python-ex1

LC 2015-10-27 Python

写给某人:有一位同学天天在我耳边念叨Python语言如何如何好(请恕我词穷不知如何复述那个如何如何到底是有多如何如何),所以下定决心要从头开始学习Python了。写代码一直是我的软肋,希望这次能坚持学习,边学边记。 借口就不再找了,总之过完双休之后,昨天礼拜一没有坚持学习,今天继续。找到个学习的教程,笨方法学Python,打算跟着这个教程学习,边学变做习题边记录。 笨方法学英语-ex1 - 学习记录 [root@lc test]# vi ex1.py print "Hello World!" print "Hello Again" print "I like typing this." print "This is fun." print 'Yay! Printing.' print "I'd much rather you 'not'." print 'I "said" do not touch this.' "ex1.py" 7L, 184C written [root@lc test]# 执行该代码,输入python ex1.py: [root@lc test]# python ex1.py Hello World! Hello Again I like typing this. This is fun. Yay! Printing. I'd much rather you 'not'. I "said" do not touch this. [root@lc test]# 习题: 1.让你的脚本再多打印一行。 [root@lc test]#...

新手学python-输入-raw_input

LC 2015-10-23 Python

写给某人:有一位同学天天在我耳边念叨Python语言如何如何好(请恕我词穷不知如何复述那个如何如何到底是有多如何如何),所以下定决心要从头开始学习Python了。写代码一直是我的软肋,希望这次能坚持学习,边学边记。   上次学习了python的输入,当时用的是input(),输入的时候比较多的问题。 Python还有一个内建函数raw_input(),通过读取控制台的输入与用户实现交互,跟input()有些区别。 >>> input_A = input("Please input: ") Please input: 123 >>> type(input_A) <type 'int'> >>> raw_input_A = raw_input("Please input: ") Please input: 123 >>> type(raw_input_A) <type 'str'> >>> raw_input() 将所有输入作为字符串看待,返回字符串类型。而 input() 在对待纯数字输入时具有自己的特性,它返回所输入的数字的类型( int, float ); 非对 input() 有特别需要,否则一般情况下推荐使用 raw_input() 来与用户交互。 学到这里,玩一下第一个Hello,World程序: >>> name = raw_input("Please input your name: ") Please input your name: World >>> print "Hello,",name Hello, World >>>      

新手学python-输入-Input

LC 2015-10-23 Python

新手学python-输入-Input 写给某人:有一位同学天天在我耳边念叨Python语言如何如何好(请恕我词穷不知如何复述那个如何如何到底是有多如何如何),所以下定决心要从头开始学习Python了。写代码一直是我的软肋,希望这次能坚持学习,边学边记。 前一次学习的print,或者直接在交互式命令行下直接输入代码接着执行并直接得到结果,这些都是程序在向屏幕“输出”。 现在,已经可以用print输出想要的结果了。但是,如果要让用户从电脑输入一些字符怎么办呢? 对的,这个问题提的很好,有“输出”,就得有“输入”,我们必须有向程序“输入”信息,才能和程序对话,进行所谓的“人机交互”。 Python提供了一个接受命令行下输入的方法:input(),可以让用户输入字符串,并存放到一个变量里。 注意,input()和print不同的地方在于,input()必须加上括号,而且必须是英文符号的括号()。 比如我们输入一个用户的年纪: 输入age = input()并按下回车后,Python交互式命令行就在等待你的输入了。这时,你可以输入任意字符,然后按回车后完成输入。     输入完成后,不会有任何提示,Python交互式命令行又回到>>>状态了。那我们刚才输入的内容到哪去了? 答案是存放到age变量里了。可以直接输入age查看变量内容: >>> age 12 要打印出name变量的内容,除了直接写age然后按回车外,还可以用print函数: >>> print age 12 >>>   使用 input 的话,当输入的时候,如果不是数字的话,必须要加引号,否则会报错。 例如: >>> name = input() LC Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<string>", line 1, in <module> NameError: name 'LC' is not defined >>> name = input() 'LC' >>> name 'LC' >>> print name LC >>>

新手学python-输出-Print

LC 2015-10-22 Python

写给某人:有一位同学天天在我耳边念叨Python语言如何如何好(请恕我词穷不知如何复述那个如何如何到底是有多如何如何),所以下定决心要从头开始学习Python了。写代码一直是我的软肋,希望这次能坚持学习,边学边记。 前一次学了如何启动和退出python的交互式环境,今天将学习python的输出-Print。 世界上第一个程序就是Hello World,由Brian Kernighan创作。 所以,我这里也不免俗,学习Python,从Hello World做起。   首先,进入Python的交互式环境。 如果要让Python打印出指定的文字,可以用print函数: >>> print 'Hello,World!' Hello,World! >>> print "Hello,World!" Hello,World! >>> print除了打印字符串以外,还可以输出各种数字、运算结果、比较结果等等。 >>> print 1 1 >>> print 1+2 3 >>> print 1>2 False >>> print 2>1 True >>>   在Python交互式命令行下,还可以直接输入代码,然后执行,并立刻得到结果。 >>> 1 1 >>> 1+2 3 >>> 1>2 False >>> 2>1 True  输入单行直接用print"",如果需要输入多行,需要使用""" """: >>> print """ This is 1st line ... This is 2nd line ... This is 3rd line ... Thie is the last line""" This is 1st line This is 2nd line This is 3rd line Thie is the last line >>> print语句也可以跟上多个字符串,用逗号“,”隔开,就可以连成一串输出: >>> print 'I know', 'how to', 'output one line' I know how to output one line >>> print会依次打印每个字符串,遇到逗号“,”会输出一个空格 那如果我们要打印1+1=2这个算式的话,就按照如下操作:  >>> print ' 1 + 1 = ',1+1 1 + 1 = 2 >>>   注意,对于1 + 1,Python解释器自动计算出结果2,但是,'1 + 1 ='是字符串而非数学公式,Python把它视为字符串。  到这里,输出学习告一个段落。下次我将学习python的输入-input。

新手学python-启动和退出Python交互式环境

LC 2015-10-21 Python

新手学python-启动和退出Python交互式环境 写给某人:有一位同学天天在我耳边念叨Python语言如何如何好(请恕我词穷不知如何复述那个如何如何到底是有多如何如何),所以下定决心要从头开始学习Python了。写代码一直是我的软肋,希望这次能坚持学习,边学边记。 初学代码首先要安装程序,之前写过一篇如何在CentOS下升级Python的文章,我的环境从2.4升级到2.7了,升级完成后,就可以开始使用python环境了。其他操作系统下的安装暂时没有研究,网上搜索有很多教程。 我自己这次学习,首先是启动和退出Python的交互式环境。以ContOS为例,在命令行中输入python,然后按下回车。结果如下: [root@lc ~]# python Python 2.7.2 (default, Mar 18 2014, 13:15:24) [GCC 4.1.2 20080704 (Red Hat 4.1.2-52)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>>   看到提示符>>>就表示我已经在Python交互式环境中了。 接着想退出该交互式环境,习惯性敲了 exit ,然后按下回车: [root@lc ~]# python Python 2.7.2 (default, Mar 18 2014, 13:15:24) [GCC 4.1.2 20080704 (Red Hat 4.1.2-52)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> exit Use exit() or Ctrl-D (i.e. EOF) to exit >>> 还在交互式环境中,且有提示,用 exit() 或者 Ctrl-D (i.e. EOF) 来退出。 接着敲 exit() 然后按下回车,退出成功。 [root@lc ~]# python Python 2.7.2 (default, Mar 18 2014, 13:15:24) [GCC 4.1.2 20080704 (Red Hat 4.1.2-52)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> exit Use exit() or Ctrl-D (i.e. EOF) to...

Python中的缩进问题

LC 2014-03-24 Python

在学习Python的时候,即使按照教程的例子来操作;也偶尔难免会出现错误;当我参照例子输入一些命令的时候,有时候一不小心就很容易多了或者少了缩进。 举个例子,写一个名为for.py的文件: #!/usr/bin/python # Filename: for.py for i in range(1,6): print i else: print 'The for loop is over' 然后运行它,将会返回“IndentationError: expected an indented block”的错误;提示第7行格式不对,期望一个缩进的块 # ./for.py       File "./for.py", line 7     print 'The for loop is over'         ^ IndentationError: expected an indented block 所以我们在第7行加上缩进 #!/usr/bin/python # Filename: for.py for i in range(1,6): print i else: print 'The for loop is over' 然后再运行,就不会出错了。   再举个例子,写一个名为ex1.py的文件: #!/usr/bin/python # Filename: ex1.py print "Hello World!" print "Hello Again" print "I like typing this." print "This is fun." print 'Yay! Printing.' print "I'd much...

如何在CentOS下升级Python

Blog Author 2014-03-18 Python

实验室中有一台CentOS5机器,它自带的 Python 版本是2.4。 但是目前许多基于Python的应用软件要求的Python版本应要高于2.4,所以我打算升级python到2.7版本. 这边记录整个升级的过程,分享给大家: 升级python版本的时候千万不要卸载 Python 2.4,再安装python2.7,这样可能会导致很多程序无法运行,甚至无法连接网络,最后不得不重新装系统。 保守的方式是直接安装python2.7的源码包,也就是python两个版本共存。(因为Centos里面有很多程序是依赖着python,所有最好不要尝试去卸载python2.4)。 (1)下载/安装python 下载Python2.7.2.tar.bz2(http://www.python.org/ftp/python/2.7.2/Python- 2.7.2.tar.bz2) $tar jxvf Python2.7.2.tar.bz2 //解压文件 $cd Python2.7.2 $./configure $make && make install 自此,python2.7安装完毕,安装后路径默认是在/usr/local/lib/python2.7 查看Python版本: $ /usr/local/bin/python2.7 -V (2)建立软连接,使系统默认的python指向python2.7 正常情况下即使python2.7安装成功后,系统默认指向的 Python 仍然是2.4版本,考虑到yum是基于python2.4才能正常工作,不敢轻易卸载。 我们想办法将系统默认的python指向到2.7版本 mv /usr/bin/python /usr/bin/python.bak //或者rm -rf /usr/bin/python ln -s /usr/local/bin/python2.7 /usr/bin/python 返回“ln: creating symbolic link `/usr/bin/python' to `/usr/local/bin/python2.7': File exists”; 检验python指向是否成功 python -V;此时依旧显示“Python 2.4.3”; 运行以下命令 ln -f /usr/local/bin/python2.7 /usr/bin/python 建立链接成功; 检验python指向是否成功 python -V;此时显示“Python 2.7.2”,这说明现在系统默认的python是指向新版本了。 (3) 解决系统python软链接指向python2.7版本后,yum不能正常工作方法: $vi /usr/bin/yum 将文本编辑显示的#/usr/bin/python修改为#/usr/bin/python2.4,保存修改退出即可