变量和类型
- 整型:Python中可以处理任意大小的整数(Python 2.x中有int和long两种类型的整数,但这种区分对Python来说意义不大,因此在Python 3.x中整数只有int这一种了),而且支持二进制(如
0b100
,换算成十进制是4)、八进制(如0o100
,换算成十进制是64)、十进制(100
)和十六进制(0x100
,换算成十进制是256)的表示法。 - 浮点型:浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,浮点数除了数学写法(如
123.456
)之外还支持科学计数法(如1.23456e2
)。 - 字符串型:字符串是以单引号或双引号括起来的任意文本,比如
'hello'
和"hello"
,字符串还有原始字符串表示法、字节字符串表示法、Unicode字符串表示法,而且可以书写成多行的形式(用三个单引号或三个双引号开头,三个单引号或三个双引号结尾)。 - 布尔型:布尔值只有
True
、False
两种值,要么是True
,要么是False
,在Python中,可以直接用True
、False
表示布尔值(请注意大小写),也可以通过布尔运算计算出来(例如3 < 5
会产生布尔值True
,而2 == 1
会产生布尔值False
)。 - 复数型:形如
3+5j
,跟数学上的复数表示一样,唯一不同的是虚部的i
换成了j
。
变量命名
- 硬性规则:
- 变量名由字母(广义的Unicode字符,不包括特殊字符)、数字和下划线构成,数字不能开头。
- 大小写敏感(大写的
a
和小写的A
是两个不同的变量)。 - 不要跟关键字(有特殊含义的单词,后面会讲到)和系统保留字(如函数、模块等的名字)冲突。
- PEP 8要求:
- 用小写字母拼写,多个单词用下划线连接。
- 受保护的实例属性用单个下划线开头(后面会讲到)。
- 私有的实例属性用两个下划线开头(后面会讲到)。
=================================================分割线==========================================
例1
#使用变量保存数据并进行算术运算
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)
例2
#使用input函数输入
使用int()进行类型转换
用占位符格式化输出的字符串
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))
例3
#使用type()检查变量的类型
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 | 逻辑运算符 |
= += -= *= /= %= //= **= &= `\ | =^=>>=<<=` |
说明: 在实际开发中,如果搞不清楚优先级可以使用括号来确保运算的执行顺序。
例4.1
a = 5
b = 10
c = 3
d = 4
e = 5
a += b # a=a+b
a -= c
a *= d
a /= e
print("a = ", a)
a = 5
b = 10
c = 3
d = 4
e = 5
a = a + b
a = a - c
a = a * d
a= a / e
print("a = ", a)
【在java语言中,a+=b和a=a+b的主要区别是在运算的精度上。类似的有“-= 、 *= 、/= 、%= ”,这里以a+=b 与 a=a+b 举例说明一下。】
若a=a+b的形式:a=a+4
根本无法运行。报错原因我也贴出来了,说是“类型不匹配:不能从int转换为byte”,
这里因为a是byte类型,而数字4默认是int 类型。在java中,在a+4时,会进行自动类型转换 ,所以a+4 会转换成int类型。而变量a还是byte类型,将int 类型的a+4赋值给byte类型的a ,无疑会报错。
错误原因:类型不同
a+=b的形式:a+=4
发现结果是正确的,程序也没毛病。大家需要明确的是“+=”是java中的一个运算符,而不是两个,所以在运算时会进行自动类型转换。所以在编译时没有报错。
此处两种形式的不同参考博客来源:Java中 a+=b和a=a+b有什么区别?
例4.2
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"""
f = float(input('请输入华氏温度: '))
c = (f - 32) / 1.8
print('%.1f华氏度 = %.1f摄氏度' % (f, c))
print((f, c))
注意1:
%d %s %c 你可以认为%是一种格式 是控制输出数据类型的
%d整形
%s 字符串
%c 字符
一般用在输出在用~10%3 = 1 在这里 %是取余用的 就是数学中的 10 处于 3 = 3 余 1 取的是 1
注意2:
%.0f表示不输出小数位,但要对第一位小数进行四舍五入
%.1f,表示保留一位小数,对第二位小数进行四舍五入
练习2
"""
输入半径计算圆的周长和面积
"""
import math
radius = float(input('请输入圆的半径: '))
perimeter = 2 * math.pi * radius
area = math.pi * radius * radius
print('周长: %.2f' % perimeter)
print('面积: %.2f' % area)
print( perimeter)
print( area)
练习3
"""
输入年份 如果是闰年输出True 否则输出False
普通闰年:能被4整除但不能被100整除的年份为普通闰年。
世纪闰年:能被400整除的为世纪闰年。
"""
year = int(input('请输入年份: '))
# 如果代码太长写成一行不便于阅读 可以使用\或()折行
is_leap = (year % 4 == 0 and year % 100 != 0 or
year % 400 == 0)
print(is_leap)
C语言中 1个等号和2个等号的区别为:
= 表示把一个值赋值给变量, == 表示比较两个变量是否相等
C语言中 1个等号为赋值运算符,意思是:赋值 = 赋值运算符的表现形式为: 变量 = 表达式
C语言中 2个等号为关系运算符,意思是:判断两边的值是否相等。 == 关系运算符的表现形式为: 变量1 == 变量2