第2章 基础入门
2.1 Python 中文编码
Python2
Python2 文件如果未指定编码,在执行过程会出现报错:
File "test.py", line 2
SyntaxError: Non-ASCII character '\xe4' in file test.py on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
Python2 中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错。
解决方法为只要在文件开头加入 # -*- coding: UTF-8 -*-
或者 #coding=utf-8
就行了
注意:#coding=utf-8 的 = 号两边不要空格。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
print "你好,世界";
Python3
Python3.X 源码文件默认使用utf-8编码,所以可以正常解析中文,无需指定 UTF-8 编码。
如果你使用编辑器,同时需要设置 py 文件存储的格式为 UTF-8,否则会出现类似以下错误信息:
SyntaxError: (unicode error) ‘utf-8’ codec can’t decode byte 0xc4 in position 0:
invalid continuation byte
Pycharm 设置步骤:
进入 file > Settings,在输入框搜索 encoding。
找到 Editor > File encodings,将 IDE Encoding 和 Project Encoding 设置为utf-8。
2.2 输入和输出
2.2.1 输出
用print()在括号中加上字符串,就可以向屏幕上输出指定的文字。比如输出'hello, world'
print()函数也可以接受多个字符串,用逗号","隔开,就可以连成一串输出:
>>> print('hello, world')
>>> print('The quick brown fox', 'jumps over', 'the lazy dog')
The quick brown fox jumps over the lazy dog
print()会依次打印每个字符串,遇到逗号“,”会输出一个空格,因此,输出的字符串是这样拼起来的:
print()也可以打印整数,或者计算结果:
>>> print(300)
300
>>> print(100 + 200)
300
>>> print('100 + 200 =', 100 + 200)
100 + 200 = 300
注意,对于100 + 200,Python解释器自动计算出结果300,但是,'100 + 200 ='是字符串而非数学公式,Python把它视为字符串,请自行解释上述打印结果。
2.2.2 输入
现在,你已经可以用print()输出你想要的结果了。但是,如果要让用户从电脑输入一些字符怎么办?
Python提供了一个input(),可以让用户输入字符串,并存放到一个变量里。比如输入用户的名字:
当你输入name = input()并按下回车后,Python交互式命令行就在等待你的输入了。这时,你可以输入任意字符,然后按回车后完成输入。
输入完成后,不会有任何提示,Python交互式命令行又回到>>>状态了。那我们刚才输入的内容到哪去了?答案是存放到name变量里了。可以直接输入name查看变量内容:
>>> name = input()
Michael
>>> name
'Michael'
有了输入和输出,我们就可以把上次打印'hello, world'的程序改成有点意义的程序了:
name = input('请输入名字:')
print('hello,', name)
运行上面的程序,第一行代码会让用户输入任意字符作为自己的名字,然后存入name变量中;第二行代码会根据用户的名字向用户说hello
比如输入Michael,input() 可以接受字符串来作为提示用户信息
C:\Workspace> python hello.py
请输入名字:Michael
hello, Michael
2.3 import 与 from...import
- 在 python 用 import 或者 from...import 来导入相应的模块。
- 将整个模块(somemodule)导入,格式为: import somemodule
- 从某个模块中导入某个函数,格式为: from somemodule import somefunction
- 从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc
- 将某个模块中的全部函数导入,格式为: from somemodule import *
2.4 注释
# 这是一个单行注释
'''
这是 单引号 多行注视
'''
"""
这是 双引号 多行注视
"""
2.5 Python3 中有6种标准的数据类型
数值 | 字符串 | 列表 | 元组 | 集合 | 字典 |
---|---|---|---|---|---|
Number | String | List | Tuple | Sets | Dictionary |
其中
- 不可变数据(3个):Number(数字)、String(字符串)、Tuple(元组)
- 可变数据(3个):List(列表)、Dictionary(字典)、Set(集合)
注意:
- Python程序是大小写敏感的,如果写错了大小写,程序会报错。
- Python使用缩进来组织代码块,请务必遵守约定俗成的习惯,坚持使用4个空格的缩进。在文本编辑器中,需要设置把Tab自动转换为4个空格,确保不混用Tab和空格。
2.6 变量
在Python中,变量没有明显的变量声明,而且类型不是固定的。只需要用等号(=)就可以把任意数据类型赋值给变量,如:
xiaohong='Xiao Hong'
而且可以重复赋值,并且允许不同类型。而当不知道变量为什么类型时,可以使用type()函数
>>> type(10)
<class 'int'>
>>> type(10.0)
<class 'float'>
>>> type('str')
<class 'str'>
变量名称,尽量取有意义的变量名,不能使用关键字作为变量名
2.7 关键字
关键字 | ||||||
---|---|---|---|---|---|---|
False | True | None | and | as | assert | break |
class | continue | def | del | elif | else | except |
finally | for | from | global | if | import | in |
nonlocal | lambda | is | not | or | pass | raise |
return | try | while | with | yield |
2.8 常量
所谓常量,就是不能变的,比如π
Python 中有两个比较常见的常量,即 PI 和 E
- PI:数字常量pi(圆周率,一般以π表示)
- E:数字常量e,即自然对数`
2.9 类型转换
函数 | 描述 |
---|---|
int(x [,base]) | 将x转换为一个整数 |
float(x) | 将x转换到一个浮点数 |
complex(real [,imag]) | 创建一个复数 |
str(x) | 将对象 x 转换为字符串 |
repr(x) | 将对象 x 转换为表达式字符串 |
eval(str) | 用来计算在字符串中的有效Python表达式,并返回一个对象 |
tuple(s) | 将序列 s 转换为一个元组 |
list(s) | 将序列 s 转换为一个列表 |
set(s) | 转换为可变集合 |
dict(d) | 创建一个字典。d 必须是一个序列 (key,value)元组。 |
frozenset(s) | 转换为不可变集合 |
chr(x) | 将一个整数转换为一个字符 |
ord(x) | 将一个字符转换为它的整数值 |
hex(x) | 将一个整数转换为一个十六进制字符串 |
oct(x) | 将一个整数转换为一个八进制字符串 |
2.10 type/isinstance 函数
isinstance 和 type 的区别在于:
- type()不会认为子类是一种父类类型。
- isinstance()会认为子类是一种父类类型。
print(type(1))
print(isinstance(1, int))
print(type(1.1))
print(isinstance(1.1, float))
print(type((10 + 0j)))
print(isinstance(10 + 0j, complex))
print(type('Hello'))
print(isinstance('Hello', str))
2.11 del 方法
可以使用del语句删除一些对象引用。del语句的语法是:
del var1[,var2[,var3[....,varN]]]
您可以通过使用del语句删除单个或多个对象。例如:
del var
del var_a, var_b
2.12 语句
2.12.1 if...else
if 条件:
执行块
elif 条件:
执行块
else:
执行块
2.12.2 循环
while
while 条件:
代码执行块
else:
代码执行块
for
for n in m
代码执行块
for循环处理字典
for k,v in dict.items()
代码执行块
2.12.3 语句控制
跳出循环
break # 中断循环
continue # 中断当次循环,进入下一次循环
空语句pass
pass # pass是空语句,作用是保持程序结构的完整性。不做任何事情,只是占位语句。
2.12.4 assert
- assert 条件, "errMsg"
- 如果条件为假时,则输出错误信息(抛异常)
网友评论