1、Python中有两种形式的注释:
- 单行注释:以#和空格开头,可以注释掉从#开始后面一整行的内容。
- 多行注释:三个引号开头,三个引号结尾,通常用于添加多行说明性内容。
2、一些计算机常识
在开始系统的学习编程之前,我们先来科普一些计算机的基础知识。计算机的硬件系统通常由五大部件构成,包括:运算器、控制器、存储器、输入设备和输出设备。其中,运算器和控制器放在一起就是我们常说的中央处理器,它的功能是执行各种运算和控制指令。刚才我们提到过程序是指令的集合,写程序就是将一系列的指令按照某种方式组织到一起,然后通过这些指令去控制计算机做我们想让它做的事情。目前,我们使用的计算机基本都是“冯·诺依曼体系结构”的计算机,这种计算机有两个关键点:一是要将存储设备与中央处理器分开;二是将数据以二进制方式编码。
二进制是一种“逢二进一”的计数法,跟我们人类使用的“逢十进一”的计数法本质是一样的。人类因为有十根手指所以使用了十进制,因为在计数时十根手指用完之后就只能用进位的方式来表示更大的数值。当然凡事都有例外,玛雅人可能是因为长年光着脚的原因,把脚趾头也都用上了,于是他们使用了二十进制的计数法。在这种计数法的指导下,玛雅人的历法就与我们平常使用的历法并不相同。按照玛雅人的历法,2012年是上一个所谓的“太阳纪”的最后一年,而2013年则是新的“太阳纪”的开始,后来这件事情被以讹传讹的方式误传为”2012年是玛雅人预言的世界末日“的荒诞说法。今天很多人都在猜测,玛雅文明之所以发展缓慢跟使用了二十进制是有关系的。对于计算机来说,二进制在物理器件上最容易实现的,因为可以用高电压表示1,用低电压表示0。不是所有写程序的人都需要知道十进制与二进制如何转换,大多数时候我们即便不了解这些知识也能写出程序,但是我们必须要知道计算机是使用二进制计数的,不管什么数据到了计算机内存中都是以二进制形式存在的。
3、。Python中的数据类型
- 整型(int):Python中可以处理任意大小的整数,而且支持二进制(如0b100,换算成十进制是4)、八进制(如0o100,换算成十进制是64)、十进制(100)和十六进制(0x100,换算成十进制是256)的表示法。
- 浮点型(float):浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,浮点数除了数学写法(如123.456)之外还支持科学计数法(如1.23456e2)。
- 字符串型(str):字符串是以单引号或双引号括起来的任意文本,比如’hello’和"hello"。
- 布尔型(bool):布尔值只有True、False两种值,要么是True,要么是False。
4、变量命名
对于每个变量我们需要给它取一个名字,就如同我们每个人都有自己的名字一样。在Python中,变量命名需要遵循以下这些规则,这些规则又分为必须遵守的硬性规则和建议遵守的非硬性规则。
硬性规则:
变量名由字母、数字和下划线构成,数字不能开头。需要说明的是,这里说的字母指的是Unicode字符,Unicode称为万国码,囊括了世界上大部分的文字系统,这也就意味着中文、日文、希腊字母等都可以作为变量名中的字符,但是像!、@、#这些特殊字符是不能出现在变量名中的,而且我们强烈建议大家尽可能使用英文字母。
大小写敏感,简单的说就是大写的A和小写的a是两个不同的变量。
变量名不要跟Python语言的关键字(有特殊含义的单词,后面会讲到)和保留字(如函数、模块等的名字)发生重名的冲突。
非硬性规则:
变量名通常使用小写英文字母,多个单词用下划线进行连接。
受保护的变量用单个下划线开头。
私有的变量用两个下划线开头。
在Python中可以使用type函数对变量的类型进行检查。
5、不同类型的变量可以相互转换,这一点可以通过Python的内置函数来实现。
int():将一个数值或字符串转换成整数,可以指定进制。
float():将一个字符串转换成浮点数。
str():将指定的对象转换成字符串形式,可以指定编码。
chr():将整数转换成该编码对应的字符串(一个字符)。
ord():将字符串(一个字符)转换成对应的编码(整数)。
# 将整数变成对应的字符 (97刚好对应字符表中的字母a)
print(chr(97)) # a
# 将字符转成整数 (Python中字符和字符串表示法相同)
print(ord('a')) # 97
6、运算符
说明: 上面这个表格实际上是按照运算符的优先级从上到下列出了各种运算符。
print(321 // 123) # 整除运算
print(321 ** 123) # 求幂运算
a *= a + 2 # 相当于:a = a * (a + 2)
- ==才是比较相等的运算符;比较不相等用的是!=,这不同于数学上的不等号,
Python 2中曾经使用过<>来表示不等关系,大家知道就可以了。 - 比较运算符的优先级高于赋值运算符,所以flag0 = 1 == 1 先做 1 == 1产生布尔值True,再将这个值赋值给变量flag0。print函数可以输出多个值,多个值之间可以用,进行分隔,输出的内容之间默认以空格分开。
print('%.1f华氏度 = %.1f摄氏度' % (f, c))
说明:
在使用print函数输出时,也可以对字符串内容进行格式化处理,上面print函数中的字符串%.1f是一个占位符,稍后会由一个float类型的变量值替换掉它。同理,如果字符串中有%d,后面可以用一个int类型的变量值替换掉它,而%s会被字符串的值替换掉。除了这种格式化字符串的方式外,还可以用下面的方式来格式化字符串,其中{f:.1f}和{c:.1f}可以先看成是{f}和{c},表示输出时会用变量f和变量c的值替换掉这两个占位符,后面的:.1f表示这是一个浮点数,小数点后保留1位有效数字。
print(f'{f:.1f}华氏度 = {c:.1f}摄氏度')
补充:
大多数软件的版本号一般分为三段,形如A.B.C,其中A表示大版本号,当软件整体重写升级或出现不向后兼容的改变时,才会增加A;B表示功能更新,出现新功能时增加B;C表示小的改动(例如:修复了某个Bug),只要有修改就增加C。
其一是“什么是(计算机)程序”,其二是“写(计算机)程序能做什么”,这里我们先对两个问题做一个回答。程序是指令的集合,写程序就是用指令控制计算机做我们想让它做的事情。
7、分支结构
- if语句的使用
在Python中,要构造分支结构可以使用if、elif和else关键字。 - Python中没有用花括号来构造代码块而是使用了缩进的方式来表示代码的层次结构,如果if条件成立的情况下需要执行多条语句,只要保持多条语句具有相同的缩进就可以了。换句话说连续的代码如果又保持了相同的缩进那么它们属于同一个代码块,相当于是一个执行的整体。缩进可以使用任意数量的空格,但通常使用4个空格,强烈建议大家不要使用制表键来缩进代码,如果你已经习惯了这么做,可以设置代码编辑工具将1个制表键自动变成4个空格,很多的代码编辑工具都支持这项功能。
print(f'f({x}) = {y}') # 注意理解
print(f'面积: {area}')
8、循环结构
- 在Python中构造循环结构有两种做法,一种是for-in循环,一种是while循环。
- for-in循环
如果明确的知道循环执行的次数,我们推荐使用for-in循环。
total = 0
for x in range(1, 101):
total += x
print(total)
需要说明的是上面代码中的range(1, 101)可以用来构造一个从1到100的范围,当我们把这样一个范围放到for-in循环中,就可以通过前面的循环变量x依次取出从1到100的整数。当然,range的用法非常灵活,下面给出了一个例子:
range(101):可以用来产生0到100范围的整数,需要注意的是取不到101。
range(1, 101):可以用来产生1到100范围的整数,相当于前面是闭区间后面是开区间。
range(1, 101, 2):可以用来产生1到100的奇数,其中2是步长,即每次数值递增的值。
range(100, 0, -2):可以用来产生100到1的偶数,其中-2是步长,即每次数字递减的值。
- while循环
如果要构造不知道具体循环次数的循环结构,我们推荐使用while循环。
answer = random.randint(1, 100)
- 嵌套的循环结构
# 打印乘法口诀表
for i in range(1, 10):
for j in range(1, i + 1):
print(f'{i}*{j}={i * j}', end='\t')
print()
# 有一个print()来实现换行输出的效果。
例子:
1、输入一个正整数判断它是不是素数
num=int(input('请输入一个正整数: '))
end = int(num ** 0.5) # 优化
flag=1
for i in range(2,end+1):
if num%i==0:
flag=0
break # 找到就可以跳出了
if flag==0 or num==1: # 注意考虑1的特殊情况
print("No")
else:
print("Yes")
2、输入两个正整数,计算它们的最大公约数和最小公倍数。
提示:
两个数的最大公约数是两个数的公共因子中最大的那个数;两个数的最小公倍数则是能够同时被两个数整除的最小的那个数。
x = int(input('x = '))
y = int(input('y = '))
if x>y: # 保证y大x小
x,y=y,x # 交换位置
for i in range(x,0,-1):
if y%i==0 and x%i==0:
break
print(f'{x}和{y}的最大公约数是{i}')
print(f'{x}和{y}的最小公倍数是{x * y // i}') # 注意是整除的符号