python基础运算符讲解(原码、补码、反码)

本文介绍了Python的基础知识,包括弱类型特性、变量命名规范、关键字查看、字符串编码及注释。详细讲解了数据类型,如数值、布尔、字符串和None。还探讨了变量交换的三种方法、字符串格式化输出、运算符类别及其用法,如算术、关系、逻辑、赋值和位运算。此外,文章提到了位运算符的应用,并简单阐述了负数的二进制表示。
摘要由CSDN通过智能技术生成

Python

1.Python基础

python是一门弱类型(PHP,python,Javascript,ruby)的语言,变量的类型不固定,当输入值是什么类型时,变量就会变成什么类型。

那什么是强数据类型语言(java,c,c++.c#)呢,当变量被定义后,则不允许存储其他的数据类型。

1.1变量的格式(可以发生变化的量):
  • 只能含有数字,下划线,字母。
  • 只能以下划线和字母开头。(不能以数字开头,因为变量和代码需要存储在内存中,而内存中的内存地址是以数字组成的,当变量开头为数字时,会使得机器误认为是内存地址,从而产生混淆。)
  • 不能以保留字和关键字为变量名。
  • 变量命名尽量规范,使得变量命有意义。(1.小驼峰法,除了首字母其他每个单词首字母大写;userAddress; 2.下划线法 user_address)
1.2 python关键字

查看Python的关键字

>>>import keyword
>>>dir(keyword)
['__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'iskeyword', 'issoftkeyword', 'kwlist', 'softkwlist']
>>>keyword.kwlist
['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

Python2默认采用ASCII编码,所以默认不支持中文;

Python3默认采用的utf-8编码。

1.3 注释

注释:对代码的解释说明,目的是为了让别人和自己很容易的看懂

  • 单行注释:#
  • 多行注释: ‘’’ ‘’’ “”" “”"(三个单引号和三个双引号),也可以每行开头使用#变为多行注释
  • 中文注释(编码注释):可以声名编码方式,#coding:utf-8,#coding=utf-8,# *-* coding:utf-8 *_*

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kq2obpGy-1647781218528)(C:\Users\陈宇鹏\AppData\Roaming\Typora\typora-user-images\image-20220319161518735.png)]

交换数值的三种方式

#第一种方式:采用中间变量法,缺点是使用临时变量,占用空间内存地址;
num1=10
num2=20
print("交换前 num1=%s,num2=%s"%(num1,num2))
tmp=num1
num1=num2
num2=tmp
print("交换后 num1=%s,num2=%s"%(num1,num2))

#第二种方式:采用数学法
print("交换前 num1=%s,num2=%s"%(num1,num2))
num1=num1+num2
num2=num1-num2
num1=num1-num2
print("交换后 num1=%s,num2=%s"%(num1,num2))

#第三种方式:直接交换
print("交换前 num1=%s,num2=%s"%(num1,num2))
num1,num2=num2,num1
print("交换后 num1=%s,num2=%s"%(num1,num2))
1.4 数据类型:
  • 基本数据类型

    • 数值型(整数型,浮点型,复数)
    • 布尔型(真 or 假)
    • 字符串(单引号,双引号,三引号)
    • None:代表空,也就是没有的意思
  • 复合数据类型(指针,引用)【字典,列表,元组,结合等】

    ‘’‘万物皆对象’‘’

1.5 字符串的格式化输出

字符串格式化输出:python提供了多种字符串格式化输出的方式

  • 1.通过%s占位 print("%s+%s=%s" %(a,b,a+b))
  • 2.将其他类型全部转换为字符串,通过+拼接,统一输出 print(str(a) + “+” + str(b) + “=” + str(a+b))
  • {}占位输出 print("{}+{}={}".format(a,b,a+b))
  • 通过逗号显示变量print(a, b)
  • print(f"{a}+{b}={a+b}")
1.6运算符
1.6.1 常见运算符:
  • 算术运算符
  • 关系(比较)运算符
  • 逻辑运算符
  • 赋值运算符
  • 三目运算符
  • 位运算符
1.6.2 算术运算符:
  • + - * / % ** // (加,减,乘,除,,取余,次方,整除)
1.6.3 关系(比较)运算符:

​ > (大于) 、< (小于) 、>=(大于等于) 、<=(小于等于)、==(用于判断)、!=(不等于)

1.6.4 逻辑运算符:

​ and 并 or 或 not 不 优先级:not>and>or

1.6.5 所属运算符

​ 所属运算符:判断一个值是否存在某个复合数据类型中

>>>arr = [1,2,3,4,5]  #定义一个arr的列表
>>>1 in arr  #判断1在不在arr列表里。
True
>>>11 in arr 
False
>>>1 not in arr 
False
>>>arr == None/arr is None/arr is not None/arr != None 判断列表是否为空
1.6.6 位运算符
a = 0011 1100
b = 0000 1101
a&b = 0000 1100 &:按位与运算符,两个都为1则为1,否则为0
a|b = 0011 1101 |:按位或运算符,有1时则为1 
a^b = 0011 0001 ^:按位异或运算符,相同为0,不同为1
~a = 1100 0011  ~:按位取反运算符,0110.
a << 2240 二进制解释:11110000 左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。
a >> 215  二进制解释:00001111	右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数
1.6.7 赋值运算符:
  • = 将等号右侧的结果赋值给左侧
  • += a +=10 <==> a = a + 10
  • -=
  • *=
  • /=
  • //=
  • **=
  • &=

python中没有自加和自减运算符,请使用+=或-+来替代!!!

1.6.8 三目运算符

变量 = 表达式 ? 结果1 : 结果2
在这里插入图片描述

1.6.9 原码、补码、反码

源码,反码,补码为了解决负数的二进制运算出错。

源码(原始的二进制码)

反码(符号位不变,其余取反)

补码(反码加一)

-2为例 -2的原码位 1000 0010  反码位 1111 1101 补码位 1111 1110
2-2就等于   
 0000 0010
 1111 1110    + 
------------------------
1 0000 0000   因为一个字节只有8个字节,故1会被溢出。

-2 + 1 = -1 
0000 0001
1111 1110 (反码)    +
---------------------
1111 1111(将这个反码变为原码   减一然后将1变为零,除符号位外) 1000 0001-3 + 5 = 2 为例
1000 0011  -3原码   1111 1100  -3补码
1111 1101   -3反码
0000 0101   5的原码      +
-----------------------------------------
1 0000 0010    最前面的1溢出
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值