DataWhale | Python编程基础 学习笔记分享01——变量、运算符、位运算和数据类型

一、变量、运算符与数据类型

1.1 注释的方式

1.1.1 单行注释

在Python中,#是表示注释,作用与整行

1.1.2 多行注释

‘’‘注释内容’’'或者""“注释内容”""表示注释
如:

'''
我被注释了!
(多行注释)
'''
# ↑注释(我是单行注释)
 
x = '我才是代码!'

# ↓注释(我也是单行注释)
"""
我也被注释了!
(多行注释)
"""

1.2 运算符

运算符就很easy了

操作符名称
+
-
*
/
//整除
%取余
**

1.2.1 比较运算符

同样比较运算符也是非常简单的!

操作符名称示例
>大于3 > 1
<小于1 < 3
>=大于等于3 >= 1
<=小于等于1 <= 3
==等于3 == 3
!=不等于1 != 3

1.2.2 逻辑运算符

逻辑运算符高中应该学过“或”、“与”、“非”。

操作符名称示例
and(2 > 1)and (3 >7)
or(1 > 3) or (2 < 9)
notnot(1 < 2)
print((2 > 1) and (3 >7))  #False  3>7不成立
print((3 > 1) and (5 > 3))  #True  两个条件均成立
print((1 < 10) or (10 < 1)) #True  1 < 10成立

1.2.3 位运算

①原码、反码和补码

二进制有三种不同的表示形式:原码、反码和补码,计算机内部使用补码来表示。
原码:就是其二进制表示(注意,最高位是符号位)。
如:
00 00 00 11 -> 3
10 00 00 11 -> -3

反码:正数的反码是其本身,负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。

00 00 00 11(原码)= 00 00 00 11(反码) -> 3
10 00 00 01(原码)= 11 11 11 10(反码)-> -1

可见如果一个反码表示的是负数, 人脑无法直观的看出来它的数值. 通常要将其转换成原码再计算.

补码
补码的表示方法是:

正数的补码就是其本身
负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)


00 00 00 01 (原)=
00 00 00 01 (反)=
00 00 00 01 (补) = +1
--------------
10 00 00 01(原)=
11 11 11 10(反)=
11 11 11 11(补)= -1
对于负数, 补码表示方式也是人脑无法直观看出其数值的. 通常也需要转换成原码再计算其数值.

② 位运算符
操作符名称示例
~按位取反
&按位与
|按位或
^按位异或
<<左移
>>右移

具体可查看
link

③ 三元运算符
x,y = 4,5
if x < y:
	small = x
else:
	small = y
print(small) #4

有了这个三元操作符的条件表达式,你可以使用一条语句来完成以下的条件判断和赋值操作。

二、变量和赋值

在使用变量之前,需要对其先赋值。
变量名可以包括字母、数字、下划线、但变量名不能以数字开头。
Python 变量名是大小写敏感的,foo != Foo。

Python在这一点比c++要简单一些,不用繁杂的变量定义

teacher = "老马的程序人生"
print(teacher)  # 老马的程序人生

myTeacher = "老马的程序人生"
yourTeacher = "小马的程序人生"
ourTeacher = myTeacher + ',' + yourTeacher
print(ourTeacher)  # 老马的程序人生,小马的程序人生

三、 数据类型与转换

类型名称示例
int整型-10,10
float浮点型3.1415,11.11
bool布尔型True,False

整型

a = 1031
print(a, type(a))
# 1031 <class 'int'>

Python 里面万物皆对象(object),整型也不例外,只要是对象,就有相应的属性 (attributes) 和方法(methods)。

b = dir(int)
print(b)

# ['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__',
# '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__',
# '__float__', '__floor__', '__floordiv__', '__format__', '__ge__',
# '__getattribute__', '__getnewargs__', '__gt__', '__hash__',
# '__index__', '__init__', '__init_subclass__', '__int__', '__invert__',
# '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__',
# '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__',
# '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__',
# '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__',
# '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__',
# '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__',
# '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__',
# 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag',
# 'numerator', 'real', 'to_bytes']

对它们有个大概印象就可以了,具体怎么用,需要哪些参数 (argument),还需要查文档。看个bit_length()的例子。

【例子】找到一个整数的二进制表示,再返回其长度。

a = 1031
print(bin(a))  # 0b10000000111
print(a.bit_length())  # 11

浮点型

print(1, type(1))
# 1 <class 'int'>

print(1., type(1.))
# 1.0 <class 'float'>

a = 0.00000023
b = 2.3e-7
print(a)  # 2.3e-07
print(b)  # 2.3e-07

如果想保留浮点型的小数点后 n 位。可以用 decimal 包里的 Decimal 对象和 getcontext() 方法来实现。

import decimal
from decimal import Decimal

Python 里面有很多用途广泛的包 (package),用什么你就引进 (import) 什么。包也是对象,也可以用上面提到的dir(decimal) 来看其属性和方法。比如getcontext() 显示了 Decimal 对象的默认精度值是 28 位( prec=28 ),展示如下:

a = decimal.getcontext()
print(a)

# Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0,
flags=[], traps=[InvalidOperation, DivisionByZero, Overflow])

当然也可以用 getcontext().prec 来调整精度。

布尔型
布尔 (boolean) 型变量只能取两个值, True 和 False 。当把布尔变量用在数字运算中,用 1 和 0 代表 True和 False 。

print()函数

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

将对象以字符串表示的方式格式化输出到流文件对象file里。其中所有非关键字参数都按str()方式进行转换为字符串输出;

关键字参数sep是实现分隔符,比如多个参数输出时想要输出中间的分隔字符;

关键字参数end是输出结束时的字符,默认是换行符\n;

关键字参数file是定义流输出的文件,可以是标准的系统输出sys.stdout,也可以重定义为别的文件;

关键字参数flush是立即把内容输出到流文件,不作缓存。

【例子】没有参数时,每次输出后都会换行。

shoplist = ['apple', 'mango', 'carrot', 'banana']
print("This is printed without 'end'and 'sep'.")
for item in shoplist:
    print(item)

# This is printed without 'end'and 'sep'.
# apple
# mango
# carrot
# banana

【例子】每次输出结束都用end设置的参数&结尾,并没有默认换行。

shoplist = ['apple', 'mango', 'carrot', 'banana']
print("This is printed with 'end='&''.")
for item in shoplist:
    print(item, end='&')
print('hello world')

# This is printed with 'end='&''.
# apple&mango&carrot&banana&hello world

【例子】item值与’another string’两个值之间用sep设置的参数&分割。由于end参数没有设置,因此默认是输出解释后换行,即end参数的默认值为\n。

shoplist = ['apple', 'mango', 'carrot', 'banana']
print("This is printed with 'sep='&''.")
for item in shoplist:
    print(item, 'another string', sep='&')

# This is printed with 'sep='&''.
# apple&another string
# mango&another string
# carrot&another string
# banana&another string

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸡飞蛋打西红柿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值