50、Python基础入门指南

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编程的道路上不断探索,取得更多的成果!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值