python小知识1DAY

内置对象概述:

就是不需要安装和导入任何模块就能用的,在python里一切都是对象 

python内置对象
对象类型类型名称例子说明
数字

int

float

complex

1

0.1

1+2j

支持复数,任意大的数字
字符串str

'asx'

r'c:\1.txt'

用('',"")包含

用r或R表示原始字符串

列表list[1,2,[4,6],'a']任意类型元素
元组tuple

(1,2,[4,8])

(1,)

一个元素时,要有逗号
字典dict{1:2,2:'as'}键不重复,键不可变
集合set{4,'a',5}元素不重复,不可变
布尔boolTrue,False逻辑值
文件f=open('1.txt')
编程单元

函数(def)

类(class)

模块(module)

常量:值不能改变

 像字符串,元组,数字都不能变

x=5
type(x)
#<class 'int'>
isinstance(x,int) #内置函数看看x是不是int类型
#True

变量类型可以改变的原因:

1是算出等号右边的结果,2是在内存里找个位置存进去,3是整个变量指向这个内存

又因为变量类型改变的是值的类型(当一个数字5改变成了字符'5',这个变量是不是就变成了char型)

abs(-1) #绝对值

字符串

 python支持中文作为变量名

赵日天='我是天下第一'
赵日天

定界符(就是"",'',''' '''这些玩意)可以互相嵌套

x='我是一只'
y='阳光大Boy'
x+y #字符串连接
#'我是一只阳光大Boy'
z='S'
z*3 #重复
#SSS

 小可爱:

x_set={1,2,'a'}
x_set[1] #这货不能用下标访问
#Traceback (most recent call last):
  File "<pyshell#22>", line 1, in <module>
    x_set[0]
TypeError: 'set' object is not subscriptable
2 in x_set #成员测试
#True
3/2 #1.5
3//2 #1
15//4.0 #3.0
-15//4.0 #-4,不是-3

# %可以求余,也可以字符串格式化
'%c %s %d %f' %(65,65,65,65)
#'A,65,65,65.000000'
3 and 5 #and和or连接的表达式的值不一定是True或False
#5
3 and 5>2 #把最后一个表达式的值作为结果
#True

#python不支持++和--
i=3
i++ #error
++i #3,意思是俩正号

查看所有内置函数或内置对象:dir(__builtins__)

help(函数名)看某个函数用法

#eval返回的是字符串里表达式的值,注意里面是字符串
eval('3+5') #8
eval('[1,2]') #[1,2]
eval('09') #error
int(09)#9
str([1,2]) #'[1,2]'
list(str([])) #['[','1',',','2',']']这个是真的狗

print()

print(1,3,sep='.')#sep是数据之间分隔符
for i in range(10):
    print(i,end=',') #end默认是换行

 

枚举和迭代

#注意可迭代对象需要转换成其他类型就可以看到了
a=[1,2]
b=reversed(a) #[2,1]这是个可迭代对象
list(b) #[2,1]

#enumerate(),枚举可迭代对象的元素,返回的是可迭代对象,每个元素都是有俩值的元组
list(enumerate('12'))
#[(0,'1'),(1,'2')]

Map(),reduce(),filter(),lambda()

 

#map就是把原来的元素每一个都经过一个函数的处理,,然后返回可迭代map对象
def f(x):
    return x+1
list(map(f,range(5)))
#[5,6,7,8,9,10]

#lambda是一个有函数功能的短句,lambda 表达式参数:表达式
a=lambda x:x+2
a(3) #5

#reduce他是将函数(这个函数有俩参数)以从左到右的方法遍历后面的序列,返回一个值
from functools import reduce
reduce(lambda x,y:x+y,range(4))
#6=((((0+1)+2)+3))

#filter就是把一个函数(一个参数)作用到一个序列上,返回的是序列里的元素(经过前面函数判断为真的元素)
s=['a','2','&']
b=filter(lambda x:x.isalnum(),s) #isalnum()判断是不是字符串
list(b)
#['a','2']

zip函数

 

#把几个可迭代对象里面对应位置的元素压缩,返回可迭代对象,得到的每个元素都是元组的形式
a=zip('abc',[1,2,3]) #显示<zip object at 0x000001A84D2998C0>这个东西,你阔以list一下
list(a)
#[('a',1),('b',2),('c',3)]
list(a) #注意,zip对象只能遍历一次,访问过就没了
#[]
#你可以在第一遍遍历时让b=list(a)

序列概述:就是一个装东西的容器,比数组强大.有俩分类方式

 一:按有序和无序

  • 有序( 列表,元组,字符串),能通过索引访问的就是有序的
  • 无序(字典,集合)

二:按能不能变化

  • 可变(列表,字典,集合)
  • 不可变(元组,字符串)

列表

a={'a':1,'b':2}
b=list({'a':1,'b':2}.items())
#items是拿出来键还有值
#[('a',1),('b',2)]

列表推导式

#我感觉就是for循环,可以嵌套,也可以加if判断
a=[x+1 for x in range(10)]
#[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
#就是for x in range(10):
        a.append(x+1)

 切片

 

#注意step=-1时候
a=[1,2,3,4]

a[3:1:-1] #[4,3],这个开始竟然比结束大

 元组,生成器表达式

 

#不可变,用切片时只能访问,不能修改
#生成器表达式就是把列表表达式的[]改成()
#像可迭代对象,不过这玩意只能遍历一次
a=(i+2 for i in range(10))
tuple(a) #(2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
tuple(a) #[]变成空的了
#map,enumerate,filter,map,zip都有这特点

 集合:

 

#关系运算符(>,<)在集合里时包含,不是比大小

 选择结构

 

if a=60: #error,条件表达式里不让赋值,因为容易和那个(等于)混淆
    print(1)

#三元运算符,很像if..else
a=5
b = 6 if a>7 else 8 #8
#(要是a>7时真,就把6给b,否则就是8)

#elif 是 else if 的缩写

 秒啊(选择结构)

score=int(input())
degree='DCBAAF' #
index=(score-60)//10 #正好让下标对应上面的字母
if index>=0:
    print(degree[index])
else:
    print(degree[-1]) #60分一下,对应的是F

      

#100之内最大素数
for n in range(1000,1,-1):
    if n%2==0:
        continue
    for i in range(3,int(n**0.5)+1,2):
        if n%i==0:
            break
    else:
        print(n)
        break   #结束外循环

写个菱形

n=int(input())
for i in range(n):
    print(('* '*i).center(n*3,' ')) #上半三角
#center是让字符串居中对齐,第一个参数是宽度
#第二个是替代空白的东西
for i in range(n,0,-1):
    print(('* '*i).center(n*3,' '))
#呼呼,气煞老夫

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值