Python学习笔记
Day_02-语言元素
指令和程序
计算机的硬件系统通常由五大部件构成,包括:运算器、控制器、存储器、输入设备和输出设备。其中,运算器和控制器放在一起就是我们通常所说的中央处理器,它的功能是执行各种运算和控制指令以及处理计算机软件中的数据.
我们通常所说的程序实际上就是指令的集合,我们程序就是将一系列的指令按照某种方式组织到一起,然后通过这些指令去控制计算机做我们想让它做的事情。
查询Baidu百科学习,什么是二进制?
二进制(binary)在数学和数字电路中指以2为基数的记数系统,以2为基数代表系统是二进位制的。这一系统中,通常用两个不同的符号0(代表零)和1(代表一)来表示。数字电子电路中,逻辑门的实现直接应用了二进制,因此现代的计算机和依赖计算机的设备里都用到二进制。每个数字称为一个比特(Bit,Binary digit的缩写).
二进制数据也是采用位置计数法,其位权是以2为底的幂。可以用公式表示为:
例题:
1 将二进制转换为10进制。
如下:2 将十进制数据转换为二进制。
方法:“除2取余,逆序排列”
如下:
变量和类型
变量是数据存储的载体。程序中定义了不同类型的数据,方便进行读写。Python
语言中集中常用的数据类型如下表:
数据类型 | 说明 | 示例 |
---|---|---|
整型 | 将Python 2.x中的int和long整合成一种;支持二进制、八进制、十进制、十六进制 | 100,0b100, 0o100 ,0x100 |
浮点型 | 即小数,因数字采用科学记数法时小数点可浮动而得名。除了数学写法,还支持科学记数法 | 123.456, 1.23456e2 |
字符串型 | 单引号或者双引号括起来的任意文本 | 'hello world', "hello world", "123" |
布尔型 | 只有两个值,True或False | 1<2,布尔值为True; 1==2,布尔值为False |
复数型 | 和数学上的复数类似,不过讲i换成了j | 1+2j |
变量的命名
每个变量都需要给它命名,命名要遵守规则。python变量命名包括硬性规则和非硬性规则。
硬性规则
变量名由字母(广义的Unicode字符,不包括特殊字符)、数字和下划线构成,数字不能开头。
大小写敏感(大写的a和小写的A是两个不同的变量)。
不要跟关键字(有特殊含义的单词,后面会讲到)和系统保留字(如函数、模块等的名字)冲突。
pep8要求
用小写字母拼写,多个单词用下划线连接。
受保护的实例属性用单个下划线开头(后面会讲到)。
私有的实例属性用两个下划线开头(后面会讲到)
当然,给变量起名还需要做到见名知意。
变量的使用
参考作者提供的例题,编写程序,程序及运行结果如下:
"""
Day02,练习1,变量的命名即基本数学运算
使用变量保存数据并计算
version:0.1
author:Chris
"""
a = 125
b = 50
print(a+b) #结果:175
print(a-b) #结果:75
print(a*b) #结果:6250
print(a/b) #结果:2
print(a//b) #结果:2
print(a%b) #结果:25
print(a**b) #结果:700649232162408535461864791644958065640130970938257885878534141944895541342930300743319094181060791015625
以上例题中,前面四种运算符是显而易见的。第五种为“整除”运算符,第六种为“取模”运算符,第七种是“指数”运算符。运行结果我标记在了每个程序语句的后面。
思考:这里我们可以看出,因为变量a和变量b都是整型,运算的结果也全部为整型?这个我需要进一步进行学习和验证。
很好,有了上面的思考,结合原作者的例题,我使用type()函数来测试一下几种运算结果的类型。将程序修改成以下格式:
"""
Day02,练习1,变量的命名即基本数学运算
使用变量保存数据并计算
version:0.2
author:Chris
"""
a = 125
b = 50
print(a+b, type(a+b))
print(a-b,type(a-b))
print(a*b, type(a*b))
print(a/b, type(a/b))
print(a//b, type(a//b))
print(a%b, type(a%b))
print(a**b, type(a**b))
运行结果如下:
(175, <type 'int'>)
(75, <type 'int'>)
(6250, <type 'int'>)
(2, <type 'int'>)
(2, <type 'int'>)
(25, <type 'int'>)
(700649232162408535461864791644958065640130970938257885878534141944895541342930300743319094181060791015625L, <type 'long'>)
可以看出,两个整型变量进行运算以后,结果都是整形。
那么不同类型的变量怎样转换呢?
我们可以利用Python内置的函数进行转换。
int():将一个数值或字符串转换成整数,可以指定进制。
float():将一个字符串转换成浮点数。
str():将指定的对象转换成字符串形式,可以指定编码。
chr():将整数转换成该编码对应的字符串(一个字符)。
ord():将字符串(一个字符)转换成对应的编码(整数)。
继续在之前的程序中进行测试:
c = 123 #定义整型变量c
d = 1.23 #定义浮点型变量d
e = "h" #定义字符串型变量e
print(int(d))
# print(int(e))
print(float(c))
# print(float(e))
print(str(c))
print(str(d))
print(chr(c))
# print(chr(d))
# print(chr(e))
# print(ord(c))
# print(ord(d))
print(ord(e))
运行程序得到以下结果:
1
123.0
123
1.23
{
104
说明:测试程序中定义了三种变量类型,测试发现,int()函数的参数只能是整形或者浮点型,字符串型是不行的,比如程序中注释掉的
print(int(e))
;float()函数的参数也只能是整型或浮点型,字符串型的也是不行的,print(float(e))
; 而chr()函数的参数只能是整型;ord()函数的参数只能是字符串,而且只能说一个字符。
input()函数及占位符
input()
函数可以通过输入设备输入变量值,然后程序接到输入的变量值之后才进行后续的计算或者操作。
其中%d
是整数的占位符,%f
是小数的占位符。因为%
代表了占位符,那么如果程序中必须要同时用到占位符和运算符%
时,运算%
用%%
来代替。
使用例题:
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))
运行,输入a=10,b=2.5运行结果如下:
a = 10
b = 2.5
10 + 2 = 12
10 - 2 = 8
10 * 2 = 20
10 / 2 = 5.000000
10 // 2 = 5
10 % 2 = 0
10 ** 2 = 100
对比运行结果,很清晰得就可以看到,print('%d + %d = %d' % (a, b, a + b))
中,前半部分其实就是把运算式输出来了,而%后面的就是对应占位符要输出的变量值。当然,我记得%f占位符还可以控制浮点型数据的小数点后面的位数,好像是%.2f,将原程序中的除运算改成 print('%d / %d = %.2f' % (a, b, a / b))
我试一下:
a = 10
b = 2.5
10 + 2 = 12
10 - 2 = 8
10 * 2 = 20
10 / 2 = 5.00
10 // 2 = 5
10 % 2 = 0
10 ** 2 = 100
成功了!😁😁😁
教程中两个练习:
第一个练习,我在上面的例题中加入如下语句:
a += b # 相当于a = a+b
a *= a+2 # 相当于 a = a*(a+2)
print(a)
运行,给a赋值为10,给b赋值为3,第一句执行后,a的值变成13,第二句语句执行后,a的值变成195。
第二个练习,主要认识逻辑运算,代码及执行结果如下:
flag0 = 1 == 1
flag1 = 3 > 2
flag2 = 2 < 1
flag3 = flag1 and flag2
flag4 = flag1 or flag2
flag5 = not(1 != 2)
print('flag0 =', flag0)
print('flag1 =', flag1)
print('flag2 =', flag2)
print('flag3 =', flag3)
print('flag4 =', flag4)
print('flag5 =', flag5)
运行结果如下:
('flag0 =', True)
('flag1 =', True)
('flag2 =', False)
('flag3 =', False)
('flag4 =', True)
('flag5 =', False)
咦?代码的结果没问题,怎么格式出现问题了?容我想想!!
练习题
- 将华氏温度转换为摄氏温度。
- 输入圆的半径计算圆的周长和面积。
- 习题1代码及运行结果:
"""
华氏温度转换为摄氏温度
Version: 0.1
Author: chris
"""
F = input("F = ")
C = (F - 32)/1.8
print('C = %.2f' %(C))
输出结果为:
F = 80
C = 26.67
- 习题2:
源代码:
"""
输入半径r,计算圆的周长C和面积S
Version: 0.1
Author: chris
"""
r = input("r = ")
C = 2 * 3.14 * r
S = 3.14 * r * r
print('C = %.2f, S = %.2f' %(C, S))
运行结果如下:
r = 3.6
C = 22.61, S = 40.69
小结
这一节,我学习了变量和运算的基本知识,知识点不难,但是细节上还需要进一步的熟练。
接下来,我会自己找一些相关的练习来加强和提升这一部分内容。笔记暂时记录到这里。
最后再补充说一下,简书支持markdown格式输入太方便了。因为我的笔记就是Mac down写的,直接复制过来就可以了,太省心了!赞一个!!