Python基础知识

🍁 基础用法

print()    # 打印输出
type()     # 查看变量类型
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("抱歉!正在学习中...")

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值