python 基础学习一

python 基础学习一

> 记录学习 全部参考 https://github.com/datawhalechina/team-learning-program

注释

#:单行注释

''' ''' 或者 """ """  :多行注释

运算符

算数运算符

加(+)减(-)乘(*)除(/) 整除(//) 取余(%) 幂(**)

比较运算符

大于(>) 小于(<) 等于(==)  不等于(!=) 大于等于(>=)  小于等于(<=)

逻辑运算符

与(and)  或(or)  非(not)

位运算符

按位取反(~)  按位与(&)  按位或 (|) 按位异或(^)  左移(<<) 右移(>>)

三元运算符

res=cifa>belsed

# 若 a>b(true)  res = c

# 若 a>b(false) res = d

三目运算符的嵌套

Python 三目运算符支持嵌套,如此可以构成更加复杂的表达式。在嵌套时需要注意 if 和 else 的配对

a,b,c,d=1,2,3,4

res=aifa>belsecifc>delsed# res = 4

res=aifa>belse(cifc>delsed)# res = 4

其他运算符

in  存在  'A' in ['A', 'B', 'C']

not in  不存在  'h' not in ['A', 'B', 'C']

is  是  "hello" is "hello"

is not  不是  "hello" is not "hello"

:

is, is not 对比的是两个变量的内存地址

==, != 对比的是两个变量的

比较的两个变量,指向的都是地址不可变的类型(str等),那么is,is not 和 ==,!= 是完全等价的。

对比的两个变量,指向的是地址可变的类型(list,dict,tuple等),则两者是有区别的。

# 两个变量均指向不可变类型

a="hello"

b="hello"

print(aisb,a==b)# True True

print(aisnotb,a!=b)# False False

# 比较的两个变量均指向可变类型

a= ["hello"]

b= ["hello"]

print(aisb,a==b)# False True

print(aisnotb,a!=b)# True False

运算符的优先级

一元运算符优于二元运算符。例如3 ** -2等价于3 ** (-2)。

先算术运算,后移位运算,最后位运算。例如 1 << 3 + 2 & 7等价于 1 << (3 + 2)) & 7。

逻辑运算最后结合。例如3 < 4 and 4 < 5等价于(3 < 4) and (4 < 5)。

数据类型与转换

整型

a=1031

print(a,type(a))

# 1031 <class 'int'>

浮点型

print(1.,type(1.))

# 1.0 <class 'float'>

a=0.00000023

b=2.3e-7

print(a)# 2.3e-07

print(b)# 2.3e-07

保留浮点型的小数点后 n 位

用 decimal 包里的 Decimal 对象和 getcontext() 方法来实现:

importdecimal

fromdecimalimportDecimal

a=decimal.getcontext()# Decimal 对象的默认精度值是 28 位 (`prec=28`)

print(a)

# Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999,

# capitals=1, clamp=0, flags=[],

# traps=[InvalidOperation, DivisionByZero, Overflow])

# 使 1/3 保留 4 位,用 getcontext().prec 来调整精度

b=Decimal(1)/Decimal(3)

print(b)        # 0.3333333333333333333333333333

decimal.getcontext().prec=4

c=Decimal(1)/Decimal(3)

print(c)# 0.3333

布尔型

布尔 (boolean) 型变量只能取两个值,True 和 False。当把布尔型变量用在数字运算中,用 1 和 0 代表 True 和 False。

确定bool(X) 的值是 True 还是 False,就看 X 是不是空,空的话就是 False,不空的话就是 True。

对于数值变量,0, 0.0 都可认为是空的。

对于容器变量,里面没元素就是空的。

print(type(0),bool(0),bool(1))    # <class 'int'> False True

print(type(10.31),bool(0.00),bool(10.31))# <class 'float'> False True

print(type(True),bool(False),bool(True))# <class 'bool'> False True

# bool作用在容器类型变量:X 只要不是空的变量,bool(X) 就是 True,其余就是 False

print(type(''),bool(''),bool('python'))# <class 'str'> False True

print(type(()),bool(()),bool((10,)))# <class 'tuple'> False True

print(type([]),bool([]),bool([1,2]))# <class 'list'> False True

print(type(set()),bool(set()),bool({1,2}))# <class 'set'> False True

print(type({}),bool({}),bool({'a':1,'b':2}))# <class 'dict'> False True

获取类型信息

获取类型信息 type(object), type() 不会认为子类是一种父类类型,不考虑继承关系。

获取类型信息 isinstance(object, classinfo) ,isinstance() 会认为子类是一种父类类型,考虑继承关系.

如果要判断两个类型是否相同推荐使用 isinstance()。

print(type(1))# <class 'int'>

print(type(5.2))# <class 'float'>

print(type(True))# <class 'bool'>

print(type('5.2'))# <class 'str'>

print(isinstance(1,int))# True

print(isinstance(5.2,float))# True

print(isinstance(True,bool))# True

print(isinstance('5.2',str))# True

类型转换

转换为整型 int(x, base=10)

转换为字符串 str(object='')

转换为浮点型 float(x)

print(int('520'))# 520

print(int(520.52))# 520

print(float('520.52'))# 520.52

print(float(520))# 520.0

print(str(10+10))# 20

print(str(10.1+5.2))# 15.3

print() 函数

print(*objects,sep=' ',end='\n',file=sys.stdout,flush=False)

将对象以字符串表示的方式格式化输出到流文件对象file里。其中所有非关键字参数都按str()方式进行转换为字符串输出;

关键字参数sep是实现分隔符,比如多个参数输出时想要输出中间的分隔字符;

关键字参数end是输出结束时的字符,默认是换行符\n;

关键字参数file是定义流输出的文件,可以是标准的系统输出sys.stdout,也可以重定义为别的文件;

关键字参数flush是立即把内容输出到流文件,不作缓存。

citylist= ['Shanghai','Beijing','Chengdu','Wuhan']

print("This is printed without 'end'and 'sep'.")

foritemincitylist:

print(item)


'''

This is printed without 'end'and 'sep'.

Shanghai

Beijing

Chengdu

Wuhan

'''

citylist= ['Shanghai','Beijing','Chengdu','Wuhan']

print("This is printed with 'end='&''.")

foritemincitylist:

print(item,end='&')

'''

This is printed with 'end='&''.

Shanghai&Beijing&Chengdu&Wuhan&

'''

citylist= ['Shanghai','Beijing','Chengdu','Wuhan']

print("This is printed with 'sep='--''.")

foritemincitylist:

print("welcome",item,sep='--')


'''

This is printed with 'sep='--''.

welcome--Shanghai

welcome--Beijing

welcome--Chengdu

welcome--Wuhan

'''

练习题

怎样对python中的代码进行注释?

# 单行注释

'''

多行注释

多行注释

'''

"""

多行注释

多行注释

"""

python有哪些运算符,这些运算符的优先级是怎样的?


python 中 is, is not 与 ==, != 的区别是什么?

is, is not 对比的是两个变量的内存地址

==, != 对比的是两个变量的

当指向地址都是不可变类型时 is,is not 和 ==,!= 是完全等价的

python有哪些运算符,这些运算符的优先级是怎样的?这些数据类型之间如何转换?

  6个标准数据类型

                  *Number(数字)

                      *True=1

                      *False=0

                      *数值的除法(/)总是返回一个浮点数,要获取整数使用//操作符

                      *在混合计算时,python会把整形转换为浮点数

                  *String(字符串)

                      *字符串用'或"括起来,同时使用\转义特殊字符串

                      *如果不想让反斜杠发生转义,可以在字符串前面加个r表示原始字符串

                      *索引值以0为开始,-1为末尾的开始位置

                      *加号+是字符串的连接符,星号*表示复制当前的字符串,紧跟的数字为复制的次数

                  *List(列表)

                      *list写在方括号之间,元素用逗号隔开

                      *和字符串一样,list可以被索引和切片

                      *list可以使用+操作符进行连接

                      *list中的元素可以改变的

                  *Tuple(元组)

                      *元组与列表类似,不同之处在于元组的元素不能修改,元组写在小括号里。元素之间用逗号隔开

                      *元组也可以被索引和切片,方法一样

                      *注意构造包含0或1个元素的元组的特殊语法规则

                      *元组也可以用+操作符进行拼接

                  *Sets(集合)

                      *set是一个无需不重复的序列,基本功能是进行成员关系的测试和删除重复元素

                  Dictionary(字典)

                      *字典是一种映射类型,字典用{}标识,它是一个无序的建(key):值(value)对集合

                      *建(key)必须使用不可变类型。在同一个字典中建(key)必须是唯一的

                      *创建空字典使用{}

   *int(x,base=10)x字符串或数字,base进制数,默认十进制 浮点转为整数

   *float 整数转换为浮点型

   *complex(1,2) 转换为复数

   *str(10)将对象转换为字符串

   *repe()将对象转换为表达式字符串

   *repr(dict)将对象转换为表达式字符串

   *eval(str)用来计算在字符串中有效的python表达式,返回一个对象

   *tuple(listi)将列表转化为元组

   *list()将元组转换为列表

   *set转换集合

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,607评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,239评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,960评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,750评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,764评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,604评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,347评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,253评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,702评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,893评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,015评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,734评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,352评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,934评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,052评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,216评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,969评论 2 355