《Python基础教程第二版》学习笔记(一)第一章 基础知识
在学习过C/C++以及JAVA后,准备学习一门脚本语言,当然python不止是脚本语言这么简单,它应该被称为高级动态编程语言。由于有一定其他语言的编程基础和项目经验,所以经过几番斟酌之后,选择了《Python基础教程第二版》这本书来进行入门学习,以前学习的时候习惯用笔记本做笔记,这次采用一种全新的形式,我直接采用python的IDLE新建.py文件,每一章边学习边总结,也供大家参考心得体会,这些程序可以直接在IDLE下用F5运行,有些注释掉的可以自行再验证,程序直接写在里面,注释十分详细,供大家参考,由于只是初步学习,所以可能会有一些纰漏,希望大家给予指正和建议,谢谢。以后每一章都会有总结,现给出第一章总结的.py文件的所有内容。
#! /usr/bin/env python
# -*- coding: utf-8 -*-
#==================== python学习程序记录 ====================#
#==================== python基础教程第二版 ==================#
#======================= 2015.11.18 =======================#
#====================== 第一章 基础知识 =====================#
# 1.1
# 只执行基本的除法运算,不进行小数舍去
# from __future__ import division
# 1.0
print "=====================1.0 start====================="
# 以下三种形式都可以,但是在2x版本中只使用第一种形式
# python的命令行执行方式是:python *.py command parameter
# #用来注释一行,'''用来注释一段代码,分别对应于C/C++中的//和/**/
print "Hello World"
print "Hello World";
print ("Hello World");
print "=====================1.0 end=======================\n"
# 1.1
print "=====================1.1 start====================="
# 普通除法与整除
print 1 / 2
print 1.0 / 2
print 1 // 2
print 1.0 // 2.0
print "=====================1.1 end=======================\n"
# 1.2
print "=====================1.2 start====================="
# 幂运算
print 3 ** 2
print -3 ** 2 # 等同于-(3 ** 2)
print (-3) ** 2
print "=====================1.2 end=======================\n"
# 1.3
# python可以处理很大的数据,俗称长整数,注意后缀L
print "=====================1.3 start====================="
print 123456789123456789L * 1234567899874563210L + 23
print "=====================1.3 end=======================\n"
# 1.4
print "=====================1.4 start====================="
# python中一切皆为对象,所以经常用“将变量x绑定到某个对象上”这种术语。
# 表达式理解为某事,语句则理解为做某事,它改变了事物。
# 语句:2 * 2,表达式: x = 2和print 2 * 2
print "=====================1.4 end=======================\n"
# 1.5
print "=====================1.5 start====================="
# 获取输入:input和raw_input(如果没有特殊要求尽量使用raw_input)
# x = input("x = ")
# y = input("y = ")
# print x * y
# input的使用,必须输入标准的合法的python表达式
# 下面这个例子必须输入类似于"John"这样的形式,不能直接输入John,否则出错
# name = input("What is your name? ")
# print "Hello " + name + "!"
# raw_input的使用,将所有的输入当作原始数据放到字符串中
# 下面这个例子则可以直接输入John,如果输入"John",则连双引号也会打印出来
# name = raw_input("What is your name? ")
# print "Hello " + name + "!"
print "=====================1.5 end=======================\n"
# 1.6
print "=====================1.6 start====================="
# python中的变量类型是动态绑定,即不必事先定义变量,直接赋值
# 编译器就可以确定变量的类型,但是变量的类型一旦确定后就不能
# 随意地用不同类型的值去和该变量进行运算了
# 比如:
# x = "string"
# print x + 3
# x = 5
print "=====================1.6 end=======================\n"
# 31页
# 1.7
print "=====================1.7 start====================="
# python的特点:
# 第一,完全面向对象
# 第二,语法简洁清晰,强制用空白符作为语句缩进,而不采用{}的形式
# 第三,具有丰富和强大的库,可以调用各种模块,包括其他语言写的模块
# 第四,脚本语言,但是更贴切地可以认为是高级动态编程语言
# 第五,简单,易学,速度快(比c/c++慢),免费开源,高层语言,移植性好,
# 解释性强,完全面向对象,可扩展性好,具有可嵌入型,丰富的库,规范的
# 代码,独特的语法(也有可能使得tab和空格的混用带来一系列问题),跨平台
# 第六,可用于图形处理、数学计算、文本处理、数据库编程、网络编程、WEB
# 编程、多谋体应用、pymo引擎、黑客编程、爬虫程序
# 一个用python写的简单的CGI程序
print("Content-type:text/html\r\n\r\n")
print("")
print("")
print("")
print("")
print("")
print("Hello World! This is my first CGI program
")
print("")
print("")
print "=====================1.7 end=======================\n"
# 1.8
print "=====================1.8 start====================="
# 导入模块或者直接导入模块内部的函数
import math
print math.sqrt(4)
foo = math.sqrt # 注意这种用法
print foo(4)
from math import sqrt
print sqrt(4)
# 复数的计算,以j结尾
import cmath
print cmath.sqrt(-1)
print "=====================1.8 end=======================\n"
# 1.9
print "=====================1.9 start====================="
# (1)
# linux和unix下加上本文件的第一行即#! /usr/bin/env python,就可以
# 直接使用learn_python_1.py或者./learn_python_1.py在shell命令行
# 中直接运行该python脚本文件
# (2)
# windows下直接双击.py文件就可以运行该脚本文件,但是运行结果会一闪而
# 过,DOS窗口直接自动关闭,使得看不到运行结果,可以在文件的最后加上下
# 面这句话,使得运行结果的DOS窗口一直存在,直到用户按下回车键
# (3)
# 注意,这句话一定要加在文件的最后面,否则这句话后面的结果就看不到
# raw_input("Press ")
print "=====================1.9 end=======================\n"
# 1.10
print "=====================1.10 start====================="
# 关于单引号、双引号以及转义字符对于字符串的影响
# (1)
# python默认使用单引号打印出字符串,而不管程序里面用的是单引号还是双
# 引号,注意这里的打印是直接输入后通过shell输出而不是通过print打印;
# (2)
# 当字符串中含有单引号时,程序必须用双引号括起来字符串
# 当字符串中含有双引号时,程序必须用单引号括起来字符串
# (3)
# 当字符串中含有单引号时,在直接输入而不用print时使用双引号打印出字符串
# 当字符串中含有双引号时,在直接输入而不用print时使用单引号打印出字符串
# 注意,如果使用print的话,显示的只是字符串的内容
# (4)
# 可以使用转义字符左斜杠'\'对解释器有歧义的字符进行转义,
# 这样使用单引号或者双引号都可以
# (1)举例
"hello world" # 在shell下直接输入显示'hello world'
'hello world' # 在shell下直接输入显示'hello world'
print "hello world" # 显示hello world
print 'hello world' # 显示hello world
# (2)(3)正确举例
"hello'world" # 在shell下直接输入显示"hello'world"
'hello"world' # 在shell下直接输入显示'hello"world'
print "hello'world" # 显示hello'world
print 'hello"world' # 显示hello"world
# (2)错误举例
# print 'hello'world' # 显示SyntaxError: invalid syntax
# print "hello"world" # 显示SyntaxError: invalid syntax
# (4)举例
'Let\'s go' # 在shell下直接输入显示"Let's go"
print 'Let\'s go' # 显示Let's go
# 在shell下直接输入下面的内容显示'"Hello world!" she said to me.'
"\"Hello world!\" she said to me."
# 下面一行显示 "Hello world!" she said to me.
print "\"Hello world!\" she said to me."
print "=====================1.10 end=======================\n"
# 1.11
print "=====================1.11 start====================="
# str repr ``(反引号而不是单引号,3x版本不再使用,它和repr功能一样)
# str相当于类型,repr相当于函数,str将其他类型转化为字符串,让字符串
# 更易于阅读,不包含两端打印的单双引号和后缀(如L),而repr和反引号则把
# 其他类型转化为字符串后转换为合法的python表达式,保留基本的打印形式,
# 结果与直接在shell下输入后显示的结果一致
print str("Hello World")
print str(100000000000L)
print repr("Hello World") # 等价于print `"Hello World"`
print repr(100000000000L) # 等价于print `100000000000L`
temp = 10L
print "The temperature is " + str(temp) # The temperature is 10
print "The temperature is " + repr(temp) # The temperature is 10L
print "=====================1.11 end=======================\n"
# 1.12
print "=====================1.12 start====================="
# 长字符串、原始字符串和Unicode
# 长字符串分行使用'''
print '''If you want
to know how to do this,
you must learn it first.'''
# 长字符串分行使用"""
print """If you want
to know how to do this,
you must learn it first."""
# 如果一行之中的最后一个字符是反斜线,那么换行符本身被转义即被忽略
# 注意,反斜线后面必须立马接回车键,不能有空格,否则空格被转义
print "Hello \
world!"
print 1 + 2 + \
4 + 5
print \
"Hello \
world!"
# 原始字符串
# 路径名中为了避免和转义字符出现冲突,可以使用双斜杠
# 打印D:\nopath\path\noway
print "D:\\nopath\\path\\noway"
# 为了避免写过多的\\,可以使用原始字符串
# 打印D:\\nopath\\path\\noway
print r"D:\\nopath\\path\\noway"
# 打印D:\nopath\path\noway
print r"D:\nopath\path\noway"
# 原始字符串中也需要用反斜线'\'对引号进行转义,不过会打印出转义用的反斜线
# 打印Let\'s go
print r'Let\'s go!'
# 原始字符串的最后一个字符不能是反斜线
# 如执行下面的语句会显示错误
# SyntaxError: EOL while scanning string literal
# print r"This is illegal\"
# 如果想使字符串的最后一个字符是反斜线则可以采用如下方法
print r"This is illegal" "\\"
# Unicode字符串也称为Unicode对象,它与字符串并不是同一种类型
# python中的普通字符串在内部都是以8位的ASCII码形式存储的,而
# Unicode字符串则存储为16位的Unicode字符,这样就可以表示世界上
# 绝大多数语言的特殊字符,python3中所有字符串都是Unicode字符串
print u"Hello world."
# 最后来观察几个中文和英文字符串的长度问题
# 打印(一个字母,正好一个字节):
# 1
x = "H"
print len(x)
# 打印(一个汉字,三个字节,说明此处存储汉字用了3个字节):
# 3
y = "基"
print len(y)
# 后面会讲到如何使得一个汉字就取得其长度唯一的方法
print "=====================1.12 end=======================\n"
# 43页
# 解释见1.9
raw_input("Press ")