1.基础语法
1.基础开端
print("hello world")
2.快捷键
| 快捷键 | 名称 |
|---|---|
| ctrl + / | 添加注释和取消注释 |
| ctrl + s | 保存 |
| ctrl + c | 复制 |
| ctrl + v | 粘贴 |
| ctrl + x | 剪切 |
| ctrl + z | 撤销 |
| ctrl + shift + z | 反撤销 |
| ctrl + f | 查找 |
| ctrl + r | 替换 |
| ctrl + a | 全选 |
ps. 选中指定范围的操作:鼠标点击选中开始的位置 然后按住shift点击结束位置
显示多个光标:按住alt键再键鼠标即可
3.基础语法
1)注释
注释就是在代码中不影响不参与执行的语句或者文字,用以专门来对代码进行注解或者说明。
"""
多行注释1
多行注释2
多行注释3
……
"""
#这就是单行注释
如上文所见,多行注释的方法是将文本或者说明放在两对"""或者'''之间;而单行注释的方法是在注解前加上#。
2)语句
语句就是代码行。在python当中,一条语句结束后可以不用写分号(写也可以),但是在某些情况下(eg.一行写两句话)也可以使用分号来分隔两句话。
print("Hello",end="");print("World")
3)缩进
在python中,格式要求非常严格。所以在一条语句的开头不能随意添加缩进(Tab)或者是空格。如果需要缩进的时候(eg.if etc),则必须添加缩进。
4)标识符
标识符是用以给变量、函数或者类来命名的。标识符的命名规则是:由字母、数字或者_组成;数字不能用以开头。(理论上其实汉字,日语,韩语等也可以作为标识符)
abc = 10
a_0 = 10
abc_a = 10
特别的:有两个语法错误需要记住:
abt+1 =10 SyntaxError: can't assign to operator
1a = 10 SyntaxError: invalid syntax
5)关键字
在python中有特殊功能或者特殊意义的标识符就是关键字,又名保留字。
查看有哪些关键字可以这样:
import keyword #导入系统keyword
print(len(keyword.kwlist)) #查看关键字数量
print(keyword.kwlist) #打印所有关键字
查询结果在python各版本中各有不同。在python3.7中有以下关键字:'False', 'None', 'True', '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'。
6)常用数据
a)数字数据:用来表示大小的数据,在程序中直接写。eg.100,18,12.5,2E3 科学计数法,支持负数 ,复数2+5j 虚部用j
print(1j*1j)
b )文本数据:文本信息对应的数据,在程序中需要用单引号或者双引号引起来,有些数据应当是文本而非数字(电话,id,身份证)
print("200")
eg."hello ","成都市","1550934040"
c )布尔数据 :用True来表示真、肯定,用False来表示假、否定。唯二两个值。
print(True)
7)常用数据类型
数据是通过不同的数据类型来分类的。
整型(int) - 包含所有的整数
浮点型(float) - 包含所有的小数
字符串(str) - 文本数据对应的数据类型
布尔类型(bool) - True和False对应的
其他: 列表(list) 字典(dict) 元组(tuple) 集合(set) 字节(bytes) 迭代器(iter) 生成器 函数(function)
我们可以通过type()来获取数据的类型:
print(type(True))
获取到的结果:<class 'bool'>
即表示该数据的数据类型是bool布尔型。
8)输入和输出函数
1)输出函数:print(数据) 在控制台直接打印指定数据 在打印数据字符串的时候不会打印引号
输入函数: input
print(表达式) 打印表达式的结果
print(10+20) 运算表达式 求和的结果打印
print(表达式1,表达式2,表达式3……) - 同时打印多个结果(在一行)
print("你好",123,'1+2',1+2)
a.定制换行
默认的情况下,一个print中的内容会在一行打印
print("hello world",end=";")
print("你好世界")
b.定制分隔
默认情况下,一个print打印多个内容的时候,多个内容之间用空格隔开
print(1,2,3,4,sep="+")
2)输入函数:input
变量 = input(输入提示信息) - 用变量来获取控制台的内容 获取的结果都是字符串
age = input("请输入年龄:")
print("============")
print("他的年龄是",age,type(age))
2.进制
进制在编程中有四种形式存在:二进制,八进制,十进制和十六进制。
1.十进制
基数:0,1,2,3,4,5,6,7,8,9
进位:逢十进一
位权:123(10) == 100+20+3 == 110^2 + 210^1 + 3*10^0 从低位到高位0 1 2 次方
表示方式(python):直接写
转换:直接打印(其他任何类型打印出来直接是十进制)
num1 = 123
num2 = 1234
print(num1+num2)
2.二进制
基数:0,1
进位:逢二进一 1+0 = 1 1+1=10
位权:1011(2)=12^0 + 12^1 +02^2 +12^3 ==11(10)
表示方式(python):0b1011 加ob、0B
转换:bin(其他进制数)
num3 = 0b1011
print(num3)
3.八进制
基数:0,1,2,3,4,5,6,7
进位:逢八进一 4+5 = 11
位权:123(8) = 38^0 +28^1 + 1*8^2 = 83
表示方式(python):八进制数前加0o/0O
转换:oct(其他进制的数)
num4 = 0o123
print(num4)
4.十六进制
基数:0,1,2,3,4,5,6,7,8,9,A(10),B(11),C(12),D(13),E(14),F(15)
进位:逢十六进一
位权:1f(16) = 1516^0 + 116^1 = 31(10)
表示方式(python):十六进制数前加 0x/0X
转换:hex(待转换的数)
num5 = 0x1f
print(num5)
5.手动运算
# ================手动进制之间的相互转换===========
# 1.十进制转换为其他进制 辗转取余法 不断的除2/8/16取余数的方法
# 2.其他进制转十进制 - 位权乘以对应位置伤的基数然后求和
#0b1011 -> 2^0 +2^1 +2^3 =11
# 3.二进制、八进制和十六进制的转换
# 001 011 011(2) -> 133(8) 二转八 切分三位一个
# 1011011= 0101 1011 = 5b(16)
# 76(8)-> 111 110 一位转为三位二进制 八转二
# a3(16) ->1010 0011(2)
# 八进制到十六进制 先转化为二进制
# a3(16) ->10 100 011(2) -> 243(8)
3.原码,反码和补码
计算机底层存储数据只能存数字,并且存的是数字的补码
计算机内存大小:(最小单位是位)
申请内存时最少用一字节(8位)
1bytes(字节)= 8 bit(位)
1kb = 1024bytes
1mb = 1024kb
1G = 1024M
1T = 1024G
1.原码
原码 = 符号位 +(链接) 数字对应的二进制 【在数字的二进制的最前面加符号】
符号位上0表示正,1表示负
正数的原码、反码、补码都是一样的,都是原码
10(10) ->1010(2)
10(10) ->00001010(原码)
-10(10) ->10001010(原码) 最前面符号位
2.反码
反码就是原码的符号位不变,其他的位全部取反(0变1,1变0)
-10 ->10001010(原码) ->11110101(反码)
3.补码
补码就是反码加1
为什么计算机存负数的时候要存补码:计算机只有加法器,只能进行加运算,
负数进行运算的时候用原码不能正确计算,只有补码才能。
-10 ->10001010(原码) ->11110101(反码) ->11110110(补码)
4.练习
130的补码:00000000100000010(原码反码补码)
-130的补码:10000000100000010(原码) ->1111111101111101(反码)
->1111111101111110(补码)
3+2 = 5
3的补码:00000011
2的补码:00000010
3 + 2 = 00000011 + 00000010 = 00000101 ==5
3-2 = 1
3的补码:00000011
-2的补码:00000010(原码)->11111101(反码)->11111110(补码)
补码运算:00000011(补码)+11111110(补码)=00000001(补码) ->整数正反补一样
二进制中的运算符
与运算:&
两者都为1则为1,否则为0
1&1 = 1,1&0 = 0, 0&1 = 0,0 & 0 = 0
或运算:|
两者都为0为0,否则为1
1 | 1 = 1, 1 | 0= 1, 0 | 1 = 1, 0 | 0 = 0
非运算:~
1取0 0 取1
~1 = 0 ~ 0 = 1
~(1001) = 0110
异或运算^
两者相等为0,不等为1
1^1 = 0 1^0= 1 0^1 = 0 0^0 = 0
位运算操作符:
有符号:<<左移 >>右移
无符号: >>>右移 忽略符号位,空位都以0补齐,不存在无符号左移,因为左移是右边补0,有符号和无符号都一样,所以没必要
原码 反码 补码 概念
计算机存储一个数使用的是二进制,最高位为符号位,其余位为数值;反码:正数的反码为原码本身,负数反码符号位不变,剩余的数字位取反;补码:正数的补码为原码本身,负数的补码为反码+1
由于计算机只有加法没有减法,所以1-1 被设计成 1 + (-1),使用补码使得两个相反数的补码相加为0,同时符号位也参与运算之中
与运算 或运算 异或 能怎么用:
与运算:求两个二进制数的相同为1的位,
例如:n&(n-1)相差一个低位的1 ,所以可以用n&(n-1)循环来求二进制中的1的位数。
或运算:求两个二进制中相同为0的位,
例如:求一个四位二进制数加上一个最小的数使它成为四位二进制的最大数(我称之为满二进制)。1001 | 0110 = 1111,同时可以使用异或来求这个数1111 ^ 1001 = 0110
异或:求两个二进制数相同的位或者不同的位(相同的为0,不同的为1)
例如:可以使用一个满二进制(我自己理解的,比如说四位满二进制为1111,八位满二进制位11111111)异或一个任意一个数,就是表示这个满二进制数%任意数,前提是这两个二进制数的最高位相等,比如说1111 必须异或1xxx,而不能异或0xxx。
————————————————
版权声明:本文为CSDN博主「DancingAlln」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_41313095/article/details/80814403