基础用法
print() # 打印输出
typeof() # 查看变量类型
dir() # 查看对象的属性、方法
类型转换
# 字符串和int转换
str(int) # int转字符串
int(str) # 数字字符串转int
# 列表和字符串转换
''.join(list)
# list=[1,2,3],转换之后为“123”。引号之间可以加分隔符,','.join(list),结果为“1,2,3”
list(str) # 返回列表
str.split() # 也是转列表的一种方法,括号里添加分隔符。
声明和赋值
python中所有的数据类型不用声明,可以直接赋值。
python对字符串赋值时,要加单引号‘’或者双引号“”。
a=1.0 #浮点型
a=10 #整型
a="Hello world!" #字符型
a="Hello \' world!" #字符中包含转义字符
b=a #使用某个变量对另外的变量赋值
字符串操作
message = "Hello world!" #赋值
m1=message.title()#字符串标题化,每个单词的首字母大写
m2=message.upper()#字符串中所有字母变为大写
m3=message.lower()#字符串中所有字母变为小写
length=len(message)#获取字符串的长度
str1=" I LOVE "
str2="CHINA"
STR0=str1+str2 #字符串拼接,STR0=“ I LOVE CHINA”
STR1=str1.lstrip() #删除字符串左边的空格,STR1=“I LOVE ”
STR2=str1.rstrip() #删除字符串右边的空格,STR1=“ I LOVE”
STR3=str1.strip() #删除字符串两边的空格,STR1=“I LOVE”
数值操作
print(4+5) #加 9
print(4-5) #减 -1
print(4*5) #乘 20
print(4/5) #除 0.8
print(2**3) #乘方 8
print(26//5) #取整数:返回商的整数部分 4
print(26%5) #取模:返回除法余数 1
声明和赋值
a=2;b=3
a+=b
print(a) #加 5
a=2;b=3
a-=b
print(a) #减 -1
a=2;b=3
a*=b
print(a) #乘 6
a=6;b=3
a/=b
print(a) #除 2.0
a=5;b=3
a%=b
print(a) #取模:返回除法余数 2
a=5;b=3
a//=b
print(a) #取整数:返回商的整数部分 1
位运算符
Python 位运算按照数据在内存中的二进制位(Bit)进行操作,它一般用于底层开发(算法设计、驱动、图像处理、单片机等),在应用层开发(Web 开发、Linux 运维等)中并不常见。
运算符 | 说明 |
& | 按位与:参与运算的两个值相应位都是1,则该位置的结果为1,否则为0 |
| | 按位或:只要对应的两个二进制位有一个为1,结果就为1 |
^ | 按位异或:当两个对应的二进制位相异时,结果为1 |
~ | 按位取反:对每个二进制位取反,把1变为0,把0变为1。~x类似于-x-1 |
<< | 左移动:二进制位左移,由“<<”右边的数指定移动位数,高位丢弃,低位补0 |
>> | 右移动:左边运算数的二进制位全部右移,右边的数指定移动位数 |
按位与运算符&的运算规则是:只有参与&运算的两个位都为 1 时,结果才为 1,否则为 0。例如1&1为 1,0&0为 0,1&0也为 0,这和逻辑运算符&&非常类似。
第一个Bit位 | 第二个Bit位 | 结果 |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
例如,9&5可以转换成如下的运算:
0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001 (9 在内存中的存储)
& 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0101 (5 在内存中的存储)
-----------------------------------------------------------------------------------
0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0001 (1 在内存中的存储)
&运算符会对参与运算的两个整数的所有二进制位进行&运算,9&5的结果为 1。又如,-9&5可以转换成如下的运算:
1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0111 (-9 在内存中的存储)
& 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0101 (5 在内存中的存储)
-----------------------------------------------------------------------------------
0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0101 (5 在内存中的存储)
再强调一遍,&运算符操作的是数据在内存中存储的原始二进制位,而不是数据本身的二进制形式;其他位运算符也一样。
以-9&5为例,-9 的在内存中的存储和 -9 的二进制形式截然不同:1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0111 (-9 在内存中的存储)
-0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001 (-9 的二进制形式,前面多余的0可以抹掉)
按位或运算符|的运算规则是:两个二进制位有一个为 1 时,结果就为 1,两个都为 0 时结果才为 0。例如1|1为 1,0|0为0,1|0 为1,这和逻辑运算中的||非常类似。
第一个Bit位 | 第二个Bit位 | 结果 |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
例如,9 | 5可以转换成如下的运算:
0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001 (9 在内存中的存储)
| 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0101 (5 在内存中的存储)
-----------------------------------------------------------------------------------
0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1101 (13 在内存中的存储)
又如,-9 | 5可以转换成如下的运算:1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0111 (-9 在内存中的存储)
| 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0101 (5 在内存中的存储)
-----------------------------------------------------------------------------------
1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0111 (-9 在内存中的存储)
^
按位异或按位异或运算^的运算规则是:参与运算的两个二进制位不同时,结果为 1,相同时结果为 0。例如0^1为 1,0^0为 0,1^1为 0。
第一个Bit位 | 第二个Bit位 | 结果 |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
例如,9 ^ 5可以转换成如下的运算:
0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001 (9 在内存中的存储)
^ 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0101 (5 在内存中的存储)
-----------------------------------------------------------------------------------
0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1100 (12 在内存中的存储)
又如,-9 ^ 5可以转换成如下的运算:
1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0111 (-9 在内存中的存储)
^ 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0101 (5 在内存中的存储)
-----------------------------------------------------------------------------------
1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0010 (-14 在内存中的存储)
~
按位取反运算符 按位取反运算符为单目运算符(只有一个操作数),右结合性,作用是对参与运算的二进制位取反。例如1为0,~0为1,这和逻辑运算中的!非常类似。
十进制数的二进制原码包括 符号位 和 二进制值。
以60为例,其二进制原码为“0011 1100”,第一位为符号位,0代表正数,1代表负数。
正数补码与二进制原码相同,负数的补码则为二进制原码符号位保持不变,其余各位取反后在最后一位上加1。
取反运算可以总结为以下5个步骤:
1.取十进制的二进制原码。
2.对原码取补码。
3.补码取反(得到最终结果的补码)。
4.取反结果再取补码(得到最终结果的原码)。
5.二进制原码转化为十进制。
例如,~9可以转换为如下的运算:
~ 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001 (9 在内存中的存储)
-----------------------------------------------------------------------------------
1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0110 (-10 在内存中的存储)
例如,~-9可以转换为如下的运算:
~ 1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0111 (-9 在内存中的存储)
-----------------------------------------------------------------------------------
0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1000 (8 在内存中的存储)
print(~9) # -10
print(~-9) # 8
<<
左移运算符Python 左移运算符<<用来把操作数的各个二进制位全部左移若干位,高位丢弃,低位补 0。
例如,9<<3可以转换为如下的运算:
<< 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001 (9 在内存中的存储)
-----------------------------------------------------------------------------------
0000 0000 -- 0000 0000 -- 0000 0000 -- 0100 1000 (72 在内存中的存储)
又如,(-9)<<3可以转换为如下的运算:<< 1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0111 (-9 在内存中的存储)
-----------------------------------------------------------------------------------
1111 1111 -- 1111 1111 -- 1111 1111 -- 1011 1000 (-72 在内存中的存储)
总结:如果数据较小,被丢弃的高位不包含 1,那么左移 n 位相当于乘以 2 的 n 次方。
print(9<<3) # 72
print(-9<<3) # -72
a = 2
print(a << 3) # 相当于a 乘 2的3次方
>>
右移运算符Python 右移运算符>>用来把操作数的各个二进制位全部右移若干位,低位丢弃,高位补 0 或 1。如果数据的最高位是 0,那么就补 0;如果最高位是 1,那么就补 1。
例如,9>>3可以转换为如下的运算:
>> 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001 (9 在内存中的存储)
-----------------------------------------------------------------------------------
0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0001 (1 在内存中的存储)
又如,(-9)>>3可以转换为如下的运算:>> 1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0111 (-9 在内存中的存储)
-----------------------------------------------------------------------------------
1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 1110 (-2 在内存中的存储)
总结:如果被丢弃的低位不包含 1,那么右移 n 位相当于除以 2 的 n 次方(但被移除的位中经常会包含 1)。
print(9>>3) # 1
print(-9>>3) # -2
控制语句
条件语句if、elif与else,基本语法格式如下:
if条件表达式1:
操作语句1
elif条件表达式2:
操作语句2
else:
操作语句3
例如:
age=input("请输入您的年龄:");
age=int(age)
if age < 18:
print("未成年!")
elif age >= 18 and age <= 25:
print("青年人!")
elif age > 25 and age <= 60:
print("中年人!")
else:
print("老年人!")
from datetime import datetime
now_time=datetime.date(datetime.now());
print(now_time);
#转化为字符串
now = datetime.strftime(now_time,"%Y-%m-%d");
year=int(now[0:4]);
print(year)
birthday=input("请出生于哪年?")
birthday=int(birthday)
print("年龄:",year-birthday)
age=year-birthday
if age < 18:
print("未成年!")
elif age >= 18 and age <= 25:
print("青年人!")
elif age > 25 and age <= 60:
print("中年人!")
else:
print("老年人!")
try、expect与else,基本语法格式:
try:
操作语句1
expect 错误类型1
操作语句2
expect 错误类型2
操作语句3
else:
操作语句4
try:
# num1=int(input('enter the first number:'))
# num2=int(input('enter the second number:'))
# print(num1/num2)
num = [1, 2, 3, 4]
print(num.remove(1))
print(num)
except Exception as err:
print(err)
except ZeroDivisionError:
print('division by zero')
else:
print("终止")
循环语句
names = ['张三','李四','王五','赵六']
#遍历names列表中的元素
for name in names:
print(name)
#打印99乘法表""
# 九九乘法表
for i in range(1, 10):
for j in range(1, i+1):
# print(f'{j}x{i}={i*j}\t', end='')
print(j,"*",i,'=',j*i,end=' ')
print()
# 九九乘法表
i = 1
while i <= 9:
j = 1
while(j <= i): # j的大小是由i来控制的
print(f'{i}*{j}={i*j}', end='\t')
j += 1
print('')
i += 1
函数
#自定义函数 function 函数名称
def function(a ,b):
return a==b
print(function(3**5,12**2-1))
#匿名函数 num1,num2 参数 num1==num2 返回值
f= lambda num1 ,num2 : num1==num2
print(f(3**5,12**2-1))
smell = input("请输入食物的味道:")
colour = input("请输入食物的颜色:")
if smell == 'sour' and colour == 'yello':
print("柠檬")
elif smell == 'sour' and colour == 'colourless':
print("醋")
elif smell == 'sweet' and colour == 'white':
print("白糖")
elif smell == 'bitter' and colour == 'black':
print("苦瓜")
elif smell == 'spicy' and colour == 'green':
print("青椒")
else:
print("抱歉!正在学习中...")