用Python编写运行一个传统的“Hello World”程序。通过它,你将学会如何编写、保存和运行Python程序。
有两种使用Python运行你的程序的方式
1. 使用交互式的带提示符的解释器 2. 使用源文件。我们将学习这两种方法。字符串是 字符的序列 。字符串基本上就是一组单词。
在每个Python程序中都要用到字符串,所以请特别留心下面这部分的内容。下面告诉你如何在Python中使用字符串。
使用单引号(')你可以用单引号指示字符串,就如同'Quote me on this'这样。所有的空白,即空格和制表符都照原样保留。
使用双引号(")在双引号中的字符串与单引号中的字符串的使用完全相同,例如"What's your name?"。
使用三引号('''或""")利用三引号,你可以指示一个多行的字符串。你可以在三引号中自由的使用单引号和双引号。例如:
'''This is a multi-line string. This is the first line. This is the second line. "What's your name?," I asked. He said "Bond, James Bond." '''转义符
假设你想要在一个字符串中包含一个单引号('),那么你该怎么指示这个字符串?例如,这个字符串是What's your name?。你肯定不会用'What's your name?'来指示它,因为Python会弄不明白这个字符串从何处开始,何处结束。所以,你需要指明单引号而不是字符串的结尾。可以通过转义符 来完成这个任务。你用\'来指示单引号——注意这个反斜杠。现在你可以把字符串表示为'What\'s your name?'。
另一个表示这个特别的字符串的方法是"What's your name?",即用双引号。类似地,要在双引号字符串中使用双引号本身的时候,也可以借助于转义符。另外,你可以用转义符\\来指示反斜杠本身。
值得注意的一件事是,在一个字符串中,行末的单独一个反斜杠表示字符串在下一行继续,而不是开始一个新的行。例如:
"This is the first sentence.\ This is the second sentence." 等价于"This is the first sentence. This is the second sentence."另一个表示这个特别的字符串的方法是"What's your name?",即用双引号。类似地,要在双引号字符串中使用双引号本身的时候,也可以借助于转义符。另外,你可以用转义符\\来指示反斜杠本身。
值得注意的一件事是,在一个字符串中,行末的单独一个反斜杠表示字符串在下一行继续,而不是开始一个新的行。例如:
"This is the first sentence.\ This is the second sentence." 等价于"This is the first sentence. This is the second sentence." 自然字符串如果你想要指示某些不需要如转义符那样的特别处理的字符串,那么你需要指定一个自然字符串。自然字符串通过给字符串加上前缀r或R来指定。
例如 r"Newlines are indicated by \n" 和 "Newlines are indicated by \n" Unicode字符串Unicode是书写国际文本的标准方法。如果你想要用你的母语如北印度语或阿拉伯语写文本,那么你需要有一个支持Unicode的编辑器。类似地,Python允许你处理Unicode文本——你只需要在字符串前加上前缀u或U。例如,u"This is a Unicode string."。
记住,在你处理文本文件的时候使用Unicode字符串,特别是当你知道这个文件含有用非英语的语言写的文本。
字符串是不可变的一旦你创造了一个字符串,你就不能再改变它了。虽然这看起来像是一件坏事,但实际上它不是。我们将会在后面的程序中看到为什么我们说它不是一个缺点。
空白在Python中是重要的。事实上行首的空白是重要的。它称为缩进。在逻辑行首的空白(空格和制表符)用来决定逻辑行的缩进层次,从而用来决定语句的分组。
这意味着同一层次的语句必须有相同的缩进。每一组这样的语句称为一个块。我们将在后面的章节中看到有关块的用处的例子。
你需要记住的一样东西是错误的缩进会引发错误。例如:
注意,在第二行的行首有一个空格。Python指示的这个错误告诉我们程序的语法是无效的,即程序没有正确地编写。它告诉你, 你不能随意地开始新的语句块 (当然除了你一直在使用的主块)。
如何缩进不要混合使用制表符和空格来缩进,因为这在跨越不同的平台的时候,无法正常工作。我 强烈建议 你在每个缩进层次使用单个制表符 或两个或四个空格 。 选择这三种缩进风格之一。更加重要的是,选择一种风格,然后一贯地使用它,即 只 使用这一种风格。
运算符与它们的用法
运算符名称说明例子+加两个对象相加3 + 5得到8。'a' + 'b'得到'ab'。-减得到负数或是一个数减去另一个数-5.2得到一个负数。50 - 24得到26。*乘两个数相乘或是返回一个被重复若干次的字符串2 * 3得到6。'la' * 3得到'lalala'。**幂
返回x的y次幂
3 ** 4得到81(即3 * 3 * 3 * 3)/除x除以y4/3得到1(整数的除法得到整数结果)。4.0/3或4/3.0得到1.3333333333333333//取整除返回商的整数部分4 // 3.0得到1.0%取模返回除法的余数8%3得到2。-25.5%2.25得到1.5<<左移把一个数的比特向左移一定数目(每个数在内存中都表示为比特或二进制数字,即0和1)2 << 2得到8。——2按比特表示为10>>右移把一个数的比特向右移一定数目11 >> 1得到5。——11按比特表示为1011,向右移动1比特后得到101,即十进制的5。&按位与数的按位与5 & 3得到1。|按位或数的按位或5 | 3得到7。^按位异或数的按位异或5 ^ 3得到6~按位翻转x的按位翻转是-(x+1)~5得到6。<小于返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。5 < 3返回0(即False)而3 < 5返回1(即True)。比较可以被任意连接:3 < 5 < 7返回True。>大于返回x是否大于y5 > 3返回True。如果两个操作数都是数字,它们首先被转换为一个共同的类型。否则,它总是返回False。<=小于等于返回x是否小于等于yx = 3; y = 6; x <= y返回True。>=大于等于返回x是否大于等于yx = 4; y = 3; x >= y返回True。==等于比较对象是否相等x = 2; y = 2; x == y返回True。x = 'str'; y = 'stR'; x == y返回False。x = 'str'; y = 'str'; x == y返回True。!=不等于比较两个对象是否不相等x = 2; y = 3; x != y返回True。not布尔“非”如果x为True,返回False。如果x为False,它返回True。x = True; not y返回False。and布尔“与”如果x为False,x and y返回False,否则它返回y的计算值。x = False; y = True; x and y,由于x是False,返回False。在这里,Python不会计算y,因为它知道这个表达式的值肯定是False(因为x是False)。这个现象称为短路计算。or布尔“或”如果x是True,它返回True,否则它返回y的计算值。x = True; y = False; x or y返回True。短路计算在这里也适用。运算符优先级
运算符描述lambdaLambda表达式or布尔“或”and布尔“与”not x布尔“非”in,not in成员测试is,is not同一性测试<,<=,>,>=,!=,==比较|按位或^按位异或&按位与<<,>>移位+,-加法与减法*,/,%乘法、除法与取余+x,-x正负号~x按位翻转**指数x.attribute属性参考x[index]下标x[index:index]寻址段f(arguments...)函数调用(experession,...)绑定或元组显示[expression,...]列表显示{key:datum,...}字典显示'expression,...'字符串转换 #!/usr/bin/python # Filename: expression.py length = 5 breadth = 2 area = length * breadth print 'Area is', area print 'Perimeter is', 2 * (length + breadth) 输出 $ python expression.py Area is 10 Perimeter is 14
使用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 here elif 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注意
我们使用了缩进层次来告诉Python每个语句分别属于哪一个块。这就是为什么缩进在Python如此重要的原因。elif和else从句都必须在逻辑行结尾处有一个冒号,下面跟着一个相应的语句块(当然还包括正确的缩进)。
使用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我们把raw_input和if语句移到了while循环内,并且在while循环开始前把running变量设置为True。首先,我们检验变量running是否为True,然后执行后面的while-块 。在执行了这块程序之后,再次检验条件,在这个例子中,条件是running变量。如果它是真的,我们再次执行while-块,否则,继续执行可选的else-块,并接着执行下一个语句。
当while循环条件变为False的时候,else块才被执行——这甚至也可能是在条件第一次被检验的时候。如果while循环有一个else从句,它将始终被执行,除非你的while循环将永远循环下去不会结束!
True和False被称为布尔类型。你可以分别把它们等效地理解为值1和0。在检验重要条件的时候,布尔类型十分重要,它们并不是真实的值1。
else块事实上是多余的,因为你可以把其中的语句放在同一块(与while相同)中,跟在while语句之后,这样可以取得相同的效果。
使用for语句
#!/usr/bin/python # Filename: for.py for i in range(1,5): print i else: print 'The for loop is over'
我们所做的只是提供两个数,range返回一个序列的数。这个序列从第一个数开始到第二个数为止。例如,range(1,5)给出序列[1, 2, 3, 4]。默认地,range的步长为1。如果我们为range提供第三个数,那么它将成为步长。例如,range(1,5,2)给出[1,3]。记住,range向上 延伸到第二个数,即它不包含第二个数。
for循环在这个范围内递归——for i in range(1,5)等价于for i in [1, 2, 3, 4],这就如同把序列中的每个数(或对象)赋值给i,一次一个,然后以每个i的值执行这个程序块。在这个例子中,我们只是打印i的值。
记住,else部分是可选的。如果包含else,它总是在for循环结束后执行一次,除非遇到break语句。
记住,for..in循环对于任何序列都适用。这里我们使用的是一个由内建range函数生成的数的列表,但是广义说来我们可以使用任何种类的由任何对象组成的序列!
相关资源:python入门教程(PDF版)