Python基础入门指南
1. 编译时与运行时代码检查
Python会进行一些编译时检查,但大多数检查(包括类型、名称等)会推迟到代码执行时进行。例如,若Python代码引用了一个不存在的用户定义函数,代码仍能成功编译,只有当代码执行路径引用到这个不存在的函数时,才会抛出异常。
以下是一个简单示例:
def myFunc(x):
if x == 3:
print(DoesNotExist(x))
else:
print('x: ', x)
上述代码只有在
myFunc
函数传入值为3时才会失败,之后Python会抛出错误。
2. Python中的简单数据类型
Python支持多种数据类型,包括基本数据类型(如数字、字符串、日期)和更复杂的数据类型(如列表、元组、字典)。下面将详细介绍一些基本数据类型及其操作。
2.1 处理数字
Python提供了与其他编程语言类似的算术运算来操作数字。以下是一些整数运算的示例:
>>> 2 + 2
4
>>> 4 / 3
1
>>> 3 * 8
24
注意,两个整数相除(
/
)实际上是截断操作,只保留整数结果。还可以将浮点数转换为指数形式:
>>> fnum = 0.00012345689000007
>>> "%.14e" % fnum
'1.23456890000070e-04'
可以使用
int()
和
float()
函数将字符串转换为数字:
word1 = "123"
word2 = "456.78"
var1 = int(word1)
var2 = float(word2)
print("var1: ", var1, " var2: ", var2)
也可以使用
eval()
函数:
word1 = "123"
word2 = "456.78"
var1 = eval(word1)
var2 = eval(word2)
print("var1: ", var1, " var2: ", var2)
若尝试将无效的字符串转换为整数或浮点数,Python会抛出异常,建议将代码放在
try/except
块中。
2.2 处理其他进制
Python中的数字默认是十进制,但可以轻松将其转换为其他进制。例如:
>>> x = 1234
>>> bin(x)
'0b10011010010'
>>> oct(x)
'0o2322'
>>> hex(x)
'0x4d2'
若要去除
0b
、
0o
或
0x
前缀,可以使用
format()
函数:
>>> format(x, 'b')
'10011010010'
>>> format(x, 'o')
'2322'
>>> format(x, 'x')
'4d2'
负数会显示负号:
>>> x = -1234
>>> format(x, 'b')
'-10011010010'
>>> format(x, 'x')
'-4d2'
2.3
chr()
函数
chr()
函数接受一个正整数作为参数,并将其转换为对应的字母值(如果存在)。字母A - Z的十进制表示为65 - 91(十六进制为41 - 5b),小写字母a - z的十进制表示为97 - 122(十六进制为61 - 7b)。
以下是使用
chr()
函数打印大写字母A的示例:
>>> x = chr(65)
>>> x
'A'
以下代码块打印一系列整数的ASCII值:
result = ""
for x in range(65, 91):
print(x, chr(x))
result = result + chr(x) + ' '
print("result: ", result)
Python 2使用ASCII字符串,而Python 3使用UTF - 8。可以使用以下代码表示一系列字符:
for x in range(65, 91):
更直观的等效代码片段是:
for x in range(ord('A'), ord('Z')):
若要显示小写字母的结果,将范围从
(65, 91)
改为以下任意一种:
for x in range(65, 91):
for x in range(ord('a'), ord('z')):
2.4
round()
函数
round()
函数可以将小数值四舍五入到指定的精度:
>>> round(1.23, 1)
1.2
>>> round(-3.42, 1)
-3.4
2.5 数字格式化
Python允许在打印小数时指定小数位数的精度:
>>> x = 1.23456
>>> format(x, '0.2f')
'1.23'
>>> format(x, '0.3f')
'1.235'
>>> 'value is {:0.3f}'.format(x)
'value is 1.235'
还可以使用
Decimal
模块进行精确的十进制运算:
>>> from decimal import Decimal
>>> a = Decimal('4.2')
>>> b = Decimal('2.1')
>>> a + b
Decimal('6.3')
>>> print(a + b)
6.3
>>> (a + b) == Decimal('6.3')
True
更多数字格式化示例:
>>> x = 1234.56789
>>> format(x, '0.2f')
'1234.57'
>>> format(x, '>10.1f')
' 1234.6'
>>> format(x, '<10.1f')
'1234.6 '
>>> format(x, '^10.1f')
' 1234.6 '
>>> format(x, ',')
'1,234.56789'
>>> format(x, '0,.1f')
'1,234.6'
2.6 处理分数
Python支持
Fraction()
函数(定义在
fractions
模块中),可以接受两个整数表示分数的分子和分母(分母不能为零)。以下是一些定义和操作分数的示例:
>>> from fractions import Fraction
>>> a = Fraction(5, 4)
>>> b = Fraction(7, 16)
>>> print(a + b)
27/16
>>> print(a * b)
35/64
>>> c = a * b
>>> c.numerator
35
>>> c.denominator
64
>>> float(c)
0.546875
>>> print(c.limit_denominator(8))
4
>>> x = 3.75
>>> y = Fraction(*x.as_integer_ratio())
>>> y
Fraction(15, 4)
3. Unicode和UTF - 8
Unicode字符串由一系列介于0和0x10ffff之间的数字组成,每个数字代表一组字节。编码是将Unicode字符串转换为字节序列的方式。在各种编码中,Unicode转换格式(UTF - 8)可能是最常见的,也是许多系统的默认编码。UTF - 8中的数字8表示编码使用8位数字,而UTF - 16使用16位数字(这种编码不太常见)。
ASCII字符集是UTF - 8的子集,因此有效的ASCII字符串可以作为UTF - 8字符串读取,无需重新编码。此外,Unicode字符串可以转换为UTF - 8字符串。
3.1 处理Unicode
Python支持Unicode,这意味着可以呈现不同语言的字符。Unicode数据可以像字符串一样存储和操作。可以通过在字符串前加字母“u”来创建Unicode字符串:
>>> u'Hello from Python!'
u'Hello from Python!'
可以通过指定特殊字符的Unicode值将其包含在字符串中。例如:
>>> u'Hello\u0020from Python!'
u'Hello from Python!'
以下是一个显示日语和中文(普通话)字符的示例:
chinese1 = u'\u5c07\u63a2\u8a0e HTML5 \u53ca\u5176\u4ed6'
hiragana = u'D3 \u306f \u304b\u3063\u3053\u3043\u3043 \u3067\u3059!'
print('Chinese:', chinese1)
print('Hiragana:', hiragana)
输出结果:
Chinese: 將探討 HTML5 及其他
Hiragana: D3 は かっこぃぃ です!
4. 处理字符串
4.1 字符串拼接
在Python 2中,字符串是ASCII编码的字节序列。可以使用“+”运算符拼接两个字符串:
>>> 'abc'
'abc'
>>> 'a' + 'b'
'ab'
也可以使用“+”或“*”拼接相同的字符串:
>>> 'a' + 'a' + 'a'
'aaa'
>>> 'a' * 3
'aaa'
可以将字符串赋值给变量并使用
print()
语句打印:
>>> print('abc')
abc
>>> x = 'abc'
>>> print(x)
abc
>>> y = 'def'
>>> print(x + y)
abcdef
4.2 字符串解包
可以将字符串中的字母解包并赋值给变量:
>>> str = "World"
>>> x1, x2, x3, x4, x5 = str
>>> x1
'W'
>>> x2
'o'
>>> x3
'r'
>>> x4
'l'
>>> x5
'd'
4.3 提取子字符串
可以使用数组表示法提取字符串的子字符串(切片),切片表示法为
start:stop:step
,其中
start
、
stop
和
step
是整数,分别指定起始值、结束值和增量值。在Python中,切片的有趣之处在于可以使用值 - 1,它从字符串的右侧而不是左侧操作。
以下是一些切片示例:
text1 = "this is a string"
print('First 7 characters:', text1[0:7])
print('Characters 2 - 4:', text1[2:4])
print('Right - most character:', text1[-1])
print('Right - most 2 characters:', text1[-3:-1])
输出结果:
First 7 characters: this is
Characters 2 - 4: is
Right - most character: g
Right - most 2 characters: in
4.4 字符串比较
可以使用
lower()
和
upper()
方法分别将字符串转换为小写和大写,这两个方法在进行两个ASCII字符串的不区分大小写比较时很有用。
以下是一个比较两个ASCII字符串的示例:
x = 'Abc'
y = 'abc'
if (x == y):
print('x and y: identical')
elif (x.lower() == y.lower()):
print('x and y: case insensitive match')
else:
print('x and y: different')
由于
x
包含混合大小写字母,
y
包含小写字母,上述代码输出:
x and y: different
4.5 字符串格式化
Python提供了
string.ljust()
、
string.rjust()
和
string.center()
函数来分别实现文本字符串的左对齐、右对齐和居中对齐,还提供了
format()
方法用于高级插值功能。
以下是一些示例:
import string
str1 = 'this is a string'
print(string.ljust(str1, 10))
print(string.rjust(str1, 40))
print(string.center(str1, 40))
输出结果:
this is a string
this is a string
this is a string
4.6 未初始化变量和
None
值
Python区分未初始化变量和
None
值。未初始化变量是尚未赋值的变量,而
None
值表示“没有值”。集合和方法通常返回
None
值,可以在条件逻辑中测试
None
值。
4.7 测试数字和字母字符
Python可以检查字符串中的每个字符,判断它是否为真正的数字或字母字符。以下是一个示例:
str1 = "4"
str2 = "4234"
str3 = "b"
str4 = "abc"
str5 = "a1b2c3"
if (str1.isdigit()):
print("this is a digit:", str1)
if (str2.isdigit()):
print("this is a digit:", str2)
if (str3.isalpha()):
print("this is alphabetic:", str3)
if (str4.isalpha()):
print("this is alphabetic:", str4)
if (not str5.isalpha()):
print("this is not pure alphabetic:", str5)
print("capitalized first letter:", str5.title())
输出结果:
this is a digit: 4
this is a digit: 4234
this is alphabetic: b
this is alphabetic: abc
this is not pure alphabetic: a1b2c3
capitalized first letter: A1B2C3
4.8 搜索和替换字符串
Python提供了搜索和替换字符串的方法。以下是使用
find()
函数搜索字符串中某个子字符串出现位置的示例:
item1 = 'abc'
item2 = 'Abc'
text = 'This is a text string with abc'
pos1 = text.find(item1)
pos2 = text.find(item2)
print('pos1=', pos1)
print('pos2=', pos2)
find()
函数返回首次成功匹配的列号,如果匹配不成功则返回 - 1。上述代码输出:
pos1= 27
pos2= -1
除了
find()
方法,还可以使用
in
运算符测试元素是否存在:
>>> lst = [1, 2, 3]
>>> 1 in lst
True
以下是替换字符串的示例:
text = 'This is a text string with abc'
print('text:', text)
text = text.replace('is a', 'was a')
print('text:', text)
输出结果:
text: This is a text string with abc
text: This was a text string with abc
4.9 去除首尾字符
Python提供了
strip()
、
lstrip()
和
rstrip()
函数来去除字符串中的字符。以下是一个示例:
text = ' leading and trailing white space '
print('text1:', 'x', text, 'y')
text = text.lstrip()
print('text2:', 'x', text, 'y')
text = text.rstrip()
print('text3:', 'x', text, 'y')
输出结果:
text1: x leading and trailing white space y
text2: x leading and trailing white space y
text3: x leading and trailing white space y
若要去除字符串内部的多余空格,可以使用
replace()
函数,还可以结合
re
模块进行正则表达式操作:
import re
text = 'a b'
a = text.replace(' ', '')
b = re.sub('\s+', ' ', text)
print(a)
print(b)
结果:
ab
a b
4.10 无换行符打印文本
如果需要在多个
print
语句输出的对象之间抑制空格和换行符,可以使用拼接或
write()
函数。
以下是使用拼接的示例:
x = str(9) + str(0xff) + str(-3.1)
print('x: ', x)
输出:
x: 9255-3.1
以下是使用
write()
函数显示字符串的示例:
import sys
write = sys.stdout.write
write('123')
write('123456789')
输出:
1233
1234567899
4.11 文本对齐
Python提供了
ljust()
、
rjust()
和
center()
方法来对齐文本。以下是示例:
text = 'Hello World'
print(text.ljust(20))
print(text.rjust(20))
print(text.center(20))
也可以使用
format()
函数进行文本对齐:
>>> format(text, '>20')
' Hello World'
综上所述,Python在数据类型处理和字符串操作方面提供了丰富的功能和灵活的方法,通过上述介绍和示例,你可以更好地掌握这些基础知识,为进一步的Python编程学习打下坚实的基础。希望这些内容对你有所帮助,祝你在Python编程的道路上取得更多的进步!
5. 总结与补充说明
5.1 关键知识点总结
为了更清晰地回顾前面所介绍的内容,下面通过表格形式总结Python中部分关键操作和函数:
| 操作类型 | 函数/方法 | 示例代码 | 功能说明 |
| — | — | — | — |
| 数字处理 |
int()
|
var1 = int("123")
| 将字符串转换为整数 |
| |
float()
|
var2 = float("456.78")
| 将字符串转换为浮点数 |
| |
eval()
|
var1 = eval("123")
| 计算字符串表达式的值 |
| |
round()
|
round(1.23, 1)
| 对小数进行四舍五入 |
| 进制转换 |
bin()
|
bin(1234)
| 将十进制数转换为二进制字符串 |
| |
oct()
|
oct(1234)
| 将十进制数转换为八进制字符串 |
| |
hex()
|
hex(1234)
| 将十进制数转换为十六进制字符串 |
| |
format()
|
format(1234, 'b')
| 格式化数字,可去除进制前缀 |
| 字符处理 |
chr()
|
chr(65)
| 将整数转换为对应的ASCII字符 |
| 字符串操作 |
+
|
'a' + 'b'
| 拼接字符串 |
| |
*
|
'a' * 3
| 重复拼接相同字符串 |
| |
find()
|
text.find('abc')
| 查找子字符串的位置 |
| |
replace()
|
text.replace('is a', 'was a')
| 替换字符串中的子字符串 |
| |
strip()
|
text.strip()
| 去除字符串首尾的指定字符 |
| |
lstrip()
|
text.lstrip()
| 去除字符串左侧的指定字符 |
| |
rstrip()
|
text.rstrip()
| 去除字符串右侧的指定字符 |
| |
lower()
|
'Abc'.lower()
| 将字符串转换为小写 |
| |
upper()
|
'abc'.upper()
| 将字符串转换为大写 |
| |
ljust()
|
text.ljust(20)
| 左对齐字符串 |
| |
rjust()
|
text.rjust(20)
| 右对齐字符串 |
| |
center()
|
text.center(20)
| 居中对齐字符串 |
5.2 操作流程梳理
下面通过mermaid流程图展示字符串处理中常见的搜索和替换操作的流程:
graph TD;
A[开始] --> B[定义文本字符串和目标字符串];
B --> C[使用find()方法查找目标字符串位置];
C --> D{是否找到};
D -- 是 --> E[记录位置并使用replace()方法替换];
D -- 否 --> F[输出未找到信息];
E --> G[输出替换后的字符串];
F --> G;
G --> H[结束];
5.3 注意事项
在使用Python进行编程时,有一些需要注意的地方:
-
异常处理
:在进行字符串到数字的转换、文件操作等可能引发异常的操作时,建议使用
try/except
块来捕获和处理异常,增强代码的健壮性。例如:
try:
var = int("abc")
except ValueError:
print("无法将该字符串转换为整数")
- 编码问题 :Python 3默认使用UTF - 8编码,但在处理不同来源的文本时,仍可能遇到编码问题。确保在读取和写入文件时指定正确的编码,避免出现乱码。
-
性能考虑
:在处理大量数据时,某些操作可能会影响性能。例如,频繁使用字符串拼接的“+”运算符可能会导致性能下降,此时可以考虑使用
join()方法。
5.4 拓展学习建议
如果你想进一步深入学习Python,可以从以下几个方面入手:
-
数据结构
:学习更复杂的数据结构,如集合(set)、堆(heap)、队列(queue)等,了解它们的特点和应用场景。
-
面向对象编程
:掌握Python的面向对象编程概念,包括类、对象、继承、多态等,提高代码的可维护性和复用性。
-
模块和库
:学习Python的标准库和第三方库,如
numpy
用于科学计算、
pandas
用于数据处理、
matplotlib
用于数据可视化等。
-
项目实践
:通过实际项目来巩固所学知识,提高解决实际问题的能力。可以从简单的命令行工具开始,逐步过渡到Web应用、数据分析项目等。
通过不断学习和实践,你将能够更加熟练地运用Python,开发出功能强大、高效的程序。希望你在Python编程的道路上不断探索,取得更多的成果!
超级会员免费看

被折叠的 条评论
为什么被折叠?



