Python语言元素详解:从基础概念到运算符与变量
本文深入解析Python语言的核心元素,涵盖计算机基础、五大数据类型(整型、浮点型、字符串、布尔型、复数型)的定义与转换,变量命名的硬性规则与PEP 8规范,以及各类运算符的优先级和使用示例。适合Python初学者系统掌握语言基础。
计算机基础与冯·诺依曼结构
指令和程序
计算机硬件系统通常由运算器、控制器、存储器、输入设备和输出设备五大部件构成。其中,运算器和控制器集成在一起,构成中央处理器(CPU),负责执行运算、控制指令以及处理计算机软件中的数据。我们日常所说的程序,本质上是指令的集合,即将一系列指令按特定逻辑组织起来,指挥计算机执行预期任务。尽管现代计算机器件工艺日益精密、处理能力大幅提升,但其核心架构仍属于“冯·诺依曼结构”。该结构有两个关键点:一是存储设备与中央处理器分离;二是数据采用二进制编码。二进制是一种“逢二进一”的计数方式,与人类常用的十进制在原理上无异。人类因拥有十根手指而使用十进制;玛雅人可能因习惯赤脚,将脚趾计入,从而发展出二十进制,这导致其历法与常规历法不同。据传,按照玛雅历法,2012年是上一个“太阳纪”的终结,而2013年则是新“太阳纪”的开始。这一观点后来被误传为“2012年世界末日”的荒诞说法。有观点推测,玛雅文明发展相对缓慢可能与其使用二十进制有关。在计算机物理器件中,实现二进制(高电压代表1,低电压代表0)最为容易,因此基于冯·诺依曼结构的计算机均采用二进制。虽然程序员无需完全以二进制思维工作,但理解二进制与十进制、八进制及十六进制之间的转换关系仍十分必要。若对此不熟悉,可参考维基百科或百度百科的相关科普内容。
Python数据类型详解
变量和类型
- 在程序设计中,变量是存储数据的载体。计算机中的变量对应实际存在的数据或存储器中分配的一块内存空间,其值可被读取和修改,这是所有计算和控制操作的基础。计算机能处理多种类型的数据,除数值外,还包括文本、图形、音频、视频等。不同数据需定义不同的存储类型。Python支持丰富的数据类型,并允许自定义新类型(后续章节介绍)。此处先介绍几种常用数据类型。
- 整型:Python可处理任意大小的整数。在Python 2.x中,整数分为int和long两种类型,但这种区分对Python而言意义不大,因此在Python 3.x中,整数仅有int一种类型。Python支持多种进制表示法:二进制(如0b100,对应十进制4)、八进制(如0o100,对应十进制64)、十进制(100)和十六进制(如0x100,对应十进制256)。
- 浮点型:即小数。之所以称为“浮点”,是因为按科学记数法表示时,小数点位置可变。浮点数既可采用数学写法(如123.456),也支持科学计数法(如1.23456e2)。
- 字符串型:字符串是由单引号或双引号括起来的任意文本,例如'hello'和"hello"。Python还支持原始字符串、字节字符串和Unicode字符串表示法,并可通过三个单引号或三个双引号将字符串书写为多行形式。
- 布尔型:布尔值仅包含True和False两种状态。在Python中,可直接使用True和False表示布尔值(注意大小写),也可通过布尔运算得出结果(例如3 < 5返回True,而2 == 1返回False)。
- 复数型:形式如3+5j,与数学中的复数表示一致,唯一区别是虚部符号由i改为j。
变量命名规范
变量命名
为每个变量命名,如同每个人拥有独特的名字。在Python中,变量命名需遵循以下硬性规则和强烈建议的非硬性规则。
硬性规则:
- 变量名由字母(广义Unicode字符,不含特殊字符)、数字和下划线组成,且数字不能位于开头。
- 大小写敏感:大写的a和小写的A被视为两个不同的变量。
- 不得与关键字(具有特殊含义的单词,后续章节介绍)和系统保留字(如函数、模块名称等)冲突。
PEP 8要求:
- 使用小写字母拼写,多个单词之间用下划线连接。
- 受保护的实例属性以单个下划线开头(后续章节介绍)。
- 私有的实例属性以两个下划线开头(后续章节介绍)。
作为专业程序员,为变量(及所有标识符)命名时,做到见名知意至关重要。
变量类型转换与运算符使用
变量的使用
以下通过几个示例说明变量类型及变量的使用方法。
"""
使用变量保存数据并进行算术运算
Version: 0.1
Author: 骆昊
"""
a = 321
b = 123
print(a + b)
print(a - b)
print(a * b)
print(a / b)
print(a // b)
print(a % b)
print(a ** b)
"""
使用input函数输入
使用int()进行类型转换
用占位符格式化输出的字符串
Version: 0.1
Author: 骆昊
"""
a = int(input('a = '))
b = int(input('b = '))
print('%d + %d = %d' % (a, b, a + b))
print('%d - %d = %d' % (a, b, a - b))
print('%d * %d = %d' % (a, b, a * b))
print('%d / %d = %f' % (a, b, a / b))
print('%d // %d = %d' % (a, b, a // b))
print('%d %% %d = %d' % (a, b, a % b))
print('%d ** %d = %d' % (a, b, a ** b))
"""
使用type()检查变量的类型
Version: 0.1
Author: 骆昊
Date: 2018-02-27
"""
a = 100
b = 12.345
c = 1 + 5j
d = 'hello, world'
e = True
print(type(a))
print(type(b))
print(type(c))
print(type(d))
print(type(e))
进行变量类型转换时,可使用Python的内置函数(准确而言,下列列出的并非严格意义上的函数,而是后续将介绍的创建对象的构造方法)。
- int():将数值或字符串转换为整数,可指定进制。
- float():将字符串转换为浮点数。
- str():将指定对象转换为字符串形式,可指定编码。
- chr():将整数转换为对应编码的字符串(单个字符)。
- ord():将字符串(单个字符)转换为对应的编码(整数)。
运算符
Python支持多种运算符,下表大致按优先级从高到低列出了所有运算符,我们将陆续使用它们。
| 运算符 | 描述 |
|---|---|
[] [:] |
下标,切片 |
** |
指数 |
~ + - |
按位取反, 正负号 |
* / % // |
乘,除,模,整除 |
+ - |
加,减 |
>> << |
右移,左移 |
& |
按位与 |
^ ` |
` |
<= < > >= |
小于等于,小于,大于,大于等于 |
== != |
等于,不等于 |
is is not |
身份运算符 |
in not in |
成员运算符 |
not or and |
逻辑运算符 |
= += -= *= /= %= //= **= &= ` |
= ^= >>= <<=` |
**说明:**在实际开发中,若不确定优先级,可使用括号确保运算执行顺序。
以下示例演示了运算符的使用。
"""
运算符的使用
Version: 0.1
Author: 骆昊
"""
a = 5
b = 10
c = 3
d = 4
e = 5
a += b
a -= c
a *= d
a /= e
print("a = ", a)
flag1 = 3 > 2
flag2 = 2 < 1
flag3 = flag1 and flag2
flag4 = flag1 or flag2
flag5 = not flag1
print("flag1 = ", flag1)
print("flag2 = ", flag2)
print("flag3 = ", flag3)
print("flag4 = ", flag4)
print("flag5 = ", flag5)
print(flag1 is True)
print(flag2 is not False)
练习
练习1:华氏温度转摄氏温度。
"""
将华氏温度转换为摄氏温度
F = 1.8C + 32
Version: 0.1
Author: 骆昊
"""
f = float(input('请输入华氏温度: '))
c = (f - 32) / 1.8
print('%.1f华氏度 = %.1f摄氏度' % (f, c))
练习2:输入圆的半径,计算周长和面积。
"""
输入半径计算圆的周长和面积
Version: 0.1
Author: 骆昊
"""
import math
radius = float(input('请输入圆的半径: '))
perimeter = 2 * math.pi * radius
area = math.pi * radius * radius
print('周长: %.2f' % perimeter)
print('面积: %.2f' % area)
练习3:输入年份,判断是否为闰年。
输入年份 如果是闰年输出True 否则输出False
Version: 0.1
Author: 骆昊
"""
year = int(input('请输入年份: '))
# 如果代码太长写成一行不便于阅读 可以使用\或()折行
is_leap = (year % 4 == 0 and year % 100 != 0 or
year % 400 == 0)
print(is_leap)
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









