对象由数据和行为两个部分组成,而行为主要通过方法来实现,通过一些特殊方法的重写可以实现运算符重载。
这里有整数、实数、复数、字符串、列表、元组、字典、集合还有zip、map、enumerate、filter等对象,这里我有一点要强调一下,元组中如果只有一个元素的话,后面的逗号不能省略。如果对元组不熟悉,没关系,我会在接下来的专栏里详细介绍的,包学包会!
也就是说不仅对象的值可以变化,变量的类型也可以随时发生改变
> x = 3
> x = 'Hello Python'
> x = [2, 0, 3, 6]
Python采用基于值的内存管理模式,也就是说Python中的变量并不直接存储值,而是存储了值的内存地址或者引用,这也是变量类型随时可以改变的原因。
1.变量名须以字母或下划线开头,变量名可由字母数字下划线组成,数字不能做变量名开头;
2.不能使用关键字作变量名;
3.Python对大小写敏感(懂我意思吧)
整数、实数与复数
Python牛逼在于支持任意大的数字,具体可以大到什么程度仅受内存大小的限制。
要注意一点,由于精度问题,对于实数运算可能会有一定误差,应该以两者之差的绝对值是否小于某个特别小的EPS作为两实数是否相等的依据。
还有一点要注意,如果有过C类或者Java基础的同学应该知道,在数字的算术运算表达式求值时会进行隐式的类型转换。关于这一块也不用急,之后也会详细讲的!
Python内置支持复数类型及其运算
>x = 3 + 4j
>y = 5 + 6j //使用j或J表示复数虚部
>x + y
(8 + 10j)
>x * y
(-9+38j)
>abs(x)
5.0
&al
3.0
>x.imag
4.0
&jugate() //共轭复数
(3 - 4j)
小知识点(Java也支持的):在数字中间位置使用单个下划线作为分隔来提高数字可读性
>3_000_033
3_000_033
分数、高精度实数
Python标准库中fractions中的Fraction对象支持分数运算,还提供了计算最大公约数gcd()函数和高精度实数类Decimal
标准库中的fractions和decimal中提供的Decimal类实现了更高精度的运算
在Python中没有字符常量和变量的概念,只有字符串类型的常量和变量,单个字符也是字符串。观察一下两个例子,发现到这个有意思的初始化方式了吗
> x= x'Python' //会报错,因为这种方式只适用于字符串常量
> x = x + 'Python' //字符串变量间连接用加号
Python 3.x除了支持Unicode编码的str类型字符串之外,还支持字符串类型bytes。对str类型的字符串调用其encode()方法进行编码得到bytes字节串,对bytes字节串调用其decode()方法并指定正确的编码格式则解码得到str字符串
Python还提供了range、map、zip、filter、enumerate、reversed等大量迭代对象(迭代对象可理解为表示数据流的对象,每次返回一个数据),大多具有惰性求值的特点,仅在需要时才给出新的元素,从而减少了内存的占用。
Python是面向对象的语言,在Python中一切皆对象!运算符就是表现对象行为的一种形式,不同类的对象支持的运算符有所不同,同一种运算符作用于不同的对象时也可能会表现出不同的行为,这正是“多态”的体现
算术运算符
1、+运算符用于加法或连接对象(只支持同类型的对象)
2、*运算符用于乘法, 还可用于列表、元组、字符串这种序列类型与整数的乘法表示序列元素的重复,生成新的序列对象。字典和集合不支持与整数相乘,因为其中的元素不允许重复
3、/和//运算符分别表示除法和求整商,//向下取整(不论正负数)
4、%运算符用于求余以及字符串格式化,但不推荐这种做法
5、**运算符用于幂乘,相当于内置函数pow()
>9 ** 0.5 //常用这种方式取平方根或者立方根等......
3
>pow(3, 2, 8) //等价于(3**2)%8
1
1 < 3 < 5 //等价于1 < 3 and 3 < 5
>3 -- 5 //3 - (-5)
8
>3 +- 5 //3 + (-5)
-2
>3 -+ 5 //3 - (5)
-2
还有Python不支持++和–运算符,虽然有些时候貌似也用得了,但我劝大家还是别用,这涉及到线程那块的知识,咱们以后讲
用户输入一个自然数,计算并输出其各个位的数字
x = input('Please enter a digit:')
print(*map(int, x))
这里用到了序列解包的思想,如果想详细了解,请跟着我看后面的博客吧
方法二、
传统思维
x = input('Please enter a digit:')
t = int(x)
v = []
num = 0
b = t % 10
if t / 10 == 0:print(x)
else:while int(t) != 0:v.append(b)t /= 10b = int(t) % 10num += 1for i in range(num - 1, -1, -1):print(v[i], end = ' ')
已知三角形的两边长及其夹角,求第三边长
import mathx = input('请输入两边及夹角(度):')
a, b, theta = map(float, x.split())
c = math.sqrt(a ** 2 + b ** 2 - 2 * a * b * s(theta * math.pi / 180))
print('c = ', c)
本文发布于:2024-02-04 12:17:37,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170707036555489.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |