python学习(一) 基础知识
开始学习《Python基础教程》
1.2 交互式解释器
按照书上的例子敲了个最简单的print函数,居然报错:
>>> print "fsdfs"
SyntaxError: Missing parentheses in call to 'print',上网查了一下,python 3和Python2的语法不一样,我按照的是3,但是书中的例子是2:
>>> print("fsdfs")
fsdfs
>>>
1.3 算法是什么
1.4 数字和表达式
1/2 = 0; // 除法
1.0 /2 = 0.5
1.0//2 = 0 // 双斜线表示整除
10%3 = 1 // 取模运算
2**3 = 8 // 幂运算
-3**2 = -9
1.4.1
1.4.2 十六进制和八进制
十进制:0x开头
八进制:0o开头
1.5 变量
1.6 语句
1.7 获取用户输入
x = input("x:")
1.8 函数
pow(2,3) 和 2**3都是幂运算。
像pow这种标准函数叫做内建函数。
abs(-10) = 10 , 表示取绝对值。
关于四舍五入的round函数:
(1)要求保留位数的后一位如果是4或者4以下的数字,则舍去, 例如 5.214保留两位小数为5.21。
(2)如果保留位数的后一位如果是6或者6以上的数字,则进上去, 例如5.216保留两位小数为5.22。
(3)如果保留位数的后一位如果是5,且该位数后没有数字。要根据保留位数的那一位决定是舍去还是进入:如果是奇数则进入,如果是偶数则舍去。例如5.215保留两位小数为5.22,5.225保留两位小数为5.22。
(4) 如果保留位数的后一位如果是5,且该位数后有数字。则进上去,例如5.2152保留两位小数为5.22,5.2252保留两位小数为5.23,5.22500001保留两位小数为5.23。
从统计学的角度,“奇进偶舍”比“四舍五入”要科学,在大量运算时,它使舍入后的结果误差的均值趋于零,而不是像四舍五入那样逢五就入,导致结果偏向大数,使得误差产生积累进而产生系统误差,“奇进偶舍”使测量结果受到舍入误差的影响降到最低。
>>> round(1.5) //如果要保留的
2
>>> round(2.5)
2
>>> round(1.51)
2
>>> round(2.51)
3
>>>
1.9 模块
用法:import导入模块,然后按照“模块.函数”的格式使用这个模块的函数。
>>> import math
>>> math.floor(11.3)
11
>>> math.floor(11.9)
11
int( ) / long( ) / float( ) 函数:类型转换。
>>> from math import ceil
>>> ceil(5.6) // 转成大于或等于他的最小整数
6
>>> from math import sqrt
>>> sqrt(5) // 求算数平方根
2.23606797749979
19.1 cmath和复数
cmath就是complex math,复数的意思。
>>> import cmath
>>> cmath.sqrt(-1)
1j
注意:这里没有使用from ... import ...语句。因为一旦使用了这个语句,就没法使用普通的sqrt函数了。
如下,python本身支持复数运算
>>> (1 + 3j) * (9 +4J)
(-3+31j)
>>>
1.10 保存并执行程序
IDLE->file->new file->编译->save->RUn->Run module!
name = input("what is your name?")
print("Hello" + name + "!")
1.10.1 通过命令提示符运行Python脚本
打开DOS提示符,进入包含Python可执行文件的目录,或者包含了这个可执行文件的目录已经放置在环境变量path中了。并且脚本文件也在这个目录中。
C:\python hell.py
1.10.2 让脚本像普通程序一样运行
在PY文件最后加入下一行:
input("Press <enter>")
这样,就可以双击py文件来执行程序了。
1.10.3 注释
#: 右边的内容会被忽略
1.11 字符串
单引号和双引号括字符是一样的,但是,如下:
>>> 'let's go' // 这里已经包含单引用了,再用单引号就报错。
SyntaxError: invalid syntax
>>> "let's go" // 用双引号就没有问题
"let's go"
另外一种方法是:用转移字符
>>> 'let\'s go'
"let's go"
]
>>> "\"hellow workd\" she sadi " // 同上述一样,双引号也可以用转义字符
'"hellow workd" she sadi '
>>>
1.11.2 拼接字符串
>>> x = "hello"
>>> y = "world"
>>> x + y
'helloworld'
>>>
1.11.3 字符串表示,str 和 repr
str和repr函数:
>>> "hello"
'hello'
>>> print("hello")
hello
>>> str("hello")
'hello'
>>> repr("hello")
"'hello'"
>>> print(str("hello"))
hello
>>> print(repr("hello"))
'hello'
>>>
1.11.5 长字符串,原始字符串和Unicode
(1) 长字符串:一个长字符串,需要跨多行,可以用三个单引号代替普通引号。
>>> str1='''
我是一个
长字符串'''
>>> str1
'\n我是一个\n长字符串'
当然,也可以用3个双引号
>>> str1="""我也是一个
长长
的字符串"""
>>> str1
'我也是一个\n长长\n的字符串'
如果一行之中最后一个字符是反斜杠,那么,换行符本身就转义了,也就是被忽略了。
>>> "hello \
world "
'hello world '
>>>
上述的反斜杠的用法也适用于表达式和语句:
>>> 1 + 2 + \
4 + 5
12
>>>
(2) 原始字符串
以r开头的的字符串,对反斜线不会特殊对待。
>>> print("Hello\nworld") // \n会被转义成换行
Hello
world
>>>
>>> path = 'c:\nowhere' // 路径是c:\nowhere
>>> path
'c:\nowhere' // 看上去是对的
>>> print(path) // 可是打印出来后,就被转义了
c:
owhere
>>>
一种写法是用反斜线对斜线进行转义:
>>> path = 'c:\\nowhere'
>>> print(path)
c:\nowhere
但是对于长路径,上述方法要写很多反斜线。
可以用前缀为r的原始字符串:
>>> print(r"let\ngo")
let\ngo
>>>
>>> r"fafafsafasdfdads\" // 原始字符串最后一个字符不能是反斜线
SyntaxError: EOL while scanning string literal
如果就想要一个以反斜杠结尾的字符串:
>>> print(r"c:\fsdfds\bar" '\\')
c:\fsdfds\bar\
>>> print("c:\fsdfds\bar" '\\')
c:sdfdsar\
>>>
(3)Unicode字符串:
python普通字符串是以8位ASCII码形式存储的,而Unicode是以16位unicode字符存储。
用前缀U表示Unicode字符串:
>>> u"hello world"
'hello world'