输入输出及字符串
开发环境
1 | os: Ubuntu 14.04 (Linux 3.13.0-32-generic linux x64) |
准备工作
安装python
Windows
用户需要手动安装python
环境,Ubuntu
自带python
,所以这步跳过,不用安装,如果需要安装指定版本,则需要去官网下载手动安装,考虑到很多python
的库都是基于python 2.7.x
编写的,所以没啥大问题我就默认使用python 2.7.6
了。安装IDE
这个看个人喜好,我安装的是PyCharm 4.5.4
,首先需要去官网下载,根据你的系统下载不同的包,下载页面是Download PyCharm。网速不是很好,我是开代理下载的,如果下载太慢,可以去我的百度网盘下载PyCharm 4.5.4 百度云解压到指定目录:
1
tar -xvf pycharm-professional-4.5.4.tar.gz -C /usr/devlop
运行
pycharm
可以在/usr/devlop/pycharm-4.5.4/bin
下找到一个脚本pycharm.sh
。运行脚本即可,具体方法是:1
2cd /usr/devlop/pycharm-4.5.4/bin
./pycharm.sh
python基本知识
输出
1
2
3
4
5
6
7
8
9>>> print 'hello, world'
hello, world
>>> print 'The quick brown fox', 'jumps over', 'the lazy dog'
The quick brown fox jumps over the lazy dog
>>> print '100 + 200 =', 100 + 200
100 + 200 = 300输入
1
2
3
4
5
6
7
8
9
10
11>>> name = raw_input()
Michael
>>> name
'Michael'
>>> print name
Michael
>>> name = raw_input('please enter your name: ')
please enter your name:注意:
raw_input
返回的永远是字符串,也就是说你输入一个int
型,返回的是一个数字字符串,你需要进行转换:1
2
3
4
5
6
7
8>>> number = raw_input("输入一个整数:")
输入一个整数:123
>>> number
'123'
>>> number = int(raw_input("输入一个整数:"))
输入一个整数:123
>>> number
123字符串
字符串用''
或者""
括起来,如果字符串内部有‘
或者"
,需要使用\
进行转义1
2>>> print 'I\'m ok.'
I'm ok.转义字符
\
可以转义很多字符,比如\n
表示换行,\t
表示制表符,字符\
本身也要转义,所以\\
表示的字符就是\
。当然如果不需要转义,可以使用r''
:1
2
3
4>>> print '\\\t\\'
\ \
>>> print r'\\\t\\'
\\\t\\如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用’’’…’’’的格式表示多行内容:
1
2
3
4
5
6>>> print '''line1
... line2
... line3'''
line1
line2
line3如果写成程序,就是:
1
2
3print '''line1
line2
line3'''空值
python
里空值用None
表示,相当于Java/C++
里的null
。变量
python
是动态语言,里面的变量不像Java/C++
里,脚本语言都比较宽松,所以代码在声明变量的时候都不需要显示的声明类型:1
2
3
4a = 123 # a是整数
print a
a = 'ABC' # a变为字符串
print a常量
所谓常量就是不能变的变量,比如常用的数学常数π就是一个常量。在Python中,通常用全部大写的变量名表示常量:1
PI = 3.14159265359
注意:
python
中即使这样定义了,也无法阻止你修改常量,可以随便改的,所以这只是个约定,但是最好不要改动。这里有个地方需要注意一下,PI
是变量,但是其内容对象是不可变对象,看下面的例子:1
2
3
4
5
6>>> a = 'abc'
>>> b = a.replace('a', 'A')
>>> b
'Abc'
>>> a
'abc'注释
单行注释
#
后面的内容为注释内容特殊注释
1
告诉
Linux/Unix
去找到python
的翻译器,这样有个好处,脚本可以直接运行,而不用python hello.py
这样。编码注释
1
# coding=utf-8
注意:这个只能放在第二行,多一个空格都不行。
doc String注释
这个东西主要是用于模块、函数和类的描述,类似于下面:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17#!/usr/bin/env python
# coding=utf-8
def testDocString():
"""
测试文档注释
:return:
"""
pass
print testDocString.__doc__
# 然后在终端中运行一下脚本,看看最后输出内容
➜ python ./Comments.py
测试文档注释
:return:
可能出现的问题
- 中文编码问题
# coding = utf-8
结果报错:
SyntaxError: Non-ASCII character ‘/xe6’
所以最后改成了
# coding=utf-8
- Unicode编码问题注意: 这个问题是由
1
2
3
4
5
6
7
8
9➜ ~ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> len('中文')
6
>>> len(u'中文')
2
>>>python
编码导致的,详细的编码问题详见字符串和编码,但是在python 3.x
中这个编码问题就不存在了:1
2
3
4
5
6
7
8
9➜ ~ python3
Python 3.4.0 (default, Jun 19 2015, 14:20:21)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> len('中文')
2
>>> len(u'中文')
2
>>>
最常见的还不是编码带来的长度问题不一致,编码主要会导致一些系统异常,常见的有两种:
- encode(编码)异常
常见的就是UnicodeEncodeError: 'ascii' codec can't encode character u'xxxx' in position xx: ordinal not in range(128)
,
意思就是把一个字符串编码为str的时候,系统默认是编码成ascii
编码格式,但是中文里面的编码超出了ascii
编码的最大范围,直接
报错,常见的就是直接掉str()
函数的时候没有指定编码。建议少用str()
函数,采用xxx.encode('utf8')
这种显示的声明
- decode(解码)异常
道理是一样的,默认也是用ascii
解码,如果是中文的话,需要手动指定uft-8
解码方式.