Task01:变量、运算符、数据类型转换和位运算
这是TT的第一篇python学习记录,前前后后也看过几遍基础知识,但是终究是没有变成自己的东西,所以通过这次组队学习,希望可以有所产出。
思维导图
简单输出代码练习1
a=2 #可以判断是否属于三种类型中的一种
print(isinstance(a,(int,str,list)))
apple=1024
print(bin(apple))
print(apple.bit_length())
#用于输出二进制表示和二进制长度
import decimal
from decimal import Decimal
box=decimal.getcontext()
print(box)#显示Decimal显示默认精准度为28(prec=28)
b=Decimal(2)/Decimal(9)
print(b)
decimal.getcontext().prec=4
c=Decimal(2)/Decimal(9)
print(c)
#用于控制浮点类型的小数点位数
print(type(''),bool(''),bool('python'))
print(type(()),bool(()),bool((10,)))
print(type([]),bool([]),bool([10,1]))
print(type({}),bool({}),bool({'a':1,'b':2}))
print(type(set()),bool(set()),bool({1,2}))
#可以初步识别(tuple)[list]{dict}set(集合)ps:dict类型中分隔符为逗号
print(int('520'))#字符串类型
print(int(520.52))#整型->浮点型
print(float('520.52'))#字符型->浮点型
print(float(520))#整型->浮点型
print(str(10.1+5.2))#浮点型->字符型
#在运行最后一个的时候出现了而报错,以后不要用str作为变量名
print()函数及代码2
print(object,sep='',end='\n',file=,flush=)
1.对于end的默认是换行
2.flush是流文件不作缓存
在下面的例子中,用到了一个小的循环结构,对于不同的print的要求可以输出不同的结果样式。在小的循环结构中可以每次输出list中的一项内容,并加以修饰。
shoplist=['apple','mango','carrot','banana']
print("This is printed without 'end' and 'sep'.")
for item in shoplist:
print(item)
#没有参数时,每次输出都会换行
shoplist=['apple','mango','carrot','banana']
print("This is printed without 'end' and 'sep'&")
for item in shoplist:
print(item,end='&')
print('hello world')
#每次输出结尾都有&
shoplist=['apple','mango','carrot','banana']
print("This is printed with 'sep'&")
for item in shoplist:
print(item,'anthor string',sep='&')
#默认结尾换行,并且以&作为分隔,并且在打印的过程中实现了字符串的连接
奇妙的位运算
1.利用<< and >>可以实现快速计算2的倍数
n<<1:计算2倍
n>>1:计算1/2
n<<m:计算n的2的m次方
2.利用异或^可以实现交换两个整数
ya=11
yb=9
ya=ya^yb
yb=ya^yb
ya=ya^yb
print(ya,yb)
异或操作主要是不同的位置取1
3.利用位运算实现整数集合
{1,3,4,8}可以表示成0100011010
0100011010
9876543210
一点小结
1.变量的类型如果分为两类的话,一类是:基本类型(整型、浮点型、布尔型);容器类型(字符、元组、列表、字典和集合),变量在使用前要先赋值。
2.在比较两个变量时,若指向的地址是不可变的类型,如字符型,那么is和双等号是等价的。若指向的是可变类型,如list、dict、tuple,是有区别的。
3.is比较的是两个变量的内存地址
双等号比较的是两个变量的值
4.一元运算符优于二元运算符,一元就是运算过程有一个未知量,++就是一元运算符。
5.算数运算>位运算>逻辑运算
6.数据类型中的bool型在遇到整型的0,浮点型的0.0,容器变量的空变量时,均返回False.其余为True。
7.在python中bin将负数转化为负二进制
尚且存疑
1.type()不会认为子类是一种父类类型,不考虑继承关系?
[可能和class有关,尚未涉及]
2.利用位运算实现整数集合
练习题
leetcode:只出现一次的数字
给定一个非空的数组,除了某个元素值出现一次意外,其余每个元素均出现两次。找出那个只出现了一次的元素。
思考:考虑用异或^的思想:
一个数和0异或的结果是数本身
一个数和它本身异或的结果是0
异或满足交换律和结合律
from typing import List
class Solution:
def Fnum( nums: List[int])->int:
temp1=0
for i in nums:
temp1 = temp1 ^ i
print(temp1)
return
Solution.Fnum([2,3,2])
编写过程中出现的问题:
1.List一直显示没有定义,需要import
2.在调用的时候函数名前面要加上类名
3.列表的循环语句是 for i in list
4.return写在循环外,根据要print的内容考虑print的位置是否在循环内。