(一)python基础数据类型、函数、函数的高级特性

一、python基础数据类型及循环

在Python中数据类型主要包括:

字符串、整数、浮点、None、变量、布尔变量、list、tuple、dict、set

1:list列表:

a = ['a',1,'2','Bob']

每一个列表中的元素对应位置索引为[0,1,2,3]

列表的操作方法:

1、增加到末尾: a.append()

2、插入指定位置 :a.insert(1,'hello')

3、删除末尾 :a.pop()

4、删除某位置 : a.pop(i)

5、说改某个元素或者替换: a[i] = ['aim']

2:tuple元组

元组的定义方式:


a = (1,2,'3','b','bob')

元组的操作方法跟list一致
元组的特性:

1、元组不能被改变

2、定义空元组:a = ()

3、定义单一元素的元组: a = ('a',)

3:set集合

元组定义方式:


s = {'abc','def'}

ss = set('abc','def')

set按value的方式储存,没有key,所以set中的元素不能重复,适用于存储不重复元素

set的操作方法:

1:增加到set中 s.add()

2:删除值 s.remove('abc')

3:并集 s | ss

4:交集 s & ss

4:dict字典:

定义方式:

d = {'a':1,'b':2,'c':3}

操作方法:

1:  迭代所有的key:print(d.keys())

2:  迭代所有的values: print(d.values())

3: 获取所有的元素:print(d.items())

4:  向字典中增加元素:d['d']=4

5:  查询字典中是否有某元素:  d.get('a',1)#在的话返回'1' 或者 用in方法 f in d  返回布尔值

6:  改某个元素或者替换 d['a'] = 10

7:  删除某一个元素 d.pop('a')

字典具有存储速度快,但是占用磁盘空间多,和list一样用的比较多。

5:条件判断

(1): 年龄计算小程序:


a = int(input('输入你的年龄'))

if a >=  40:
    print('老年人')
elif a >=18:
    print('成年人')
else:
    print('小孩子')

运行结果:

输入你的年龄:23
你是成年人

进程已结束,退出代码0

(2):网吧充值系统:

print('★★★★★欢迎光临把把吃鸡网吧★★★★★\n')
age = int(input("欢迎来到本网咖,请输入你的出生年份?"))
if age <= 2000:
    vip = input("欢迎来到本网咖,请问你是否是会员?")#是 或者 不是
    if vip == "是"or vip == "yes":
        money = int(input("请输入本次充值金额:"))
        time = money/25
        print("你的余额可供上网时长为%d小时(25元每小时)"%time)
    elif   vip == "不"or vip =="no":
        new_money=int(input("请输入本次充值金额:"))
        new_time=new_money/50
        print("你的余额可供上网时间时长为%d小时(25元没小时)"%new_time)
    else :
        print("输入错误")
elif age > 2000:
    print("未成年")
else:
    print("输入错误")

运行结果:

★★★★★欢迎光临把把吃鸡网吧★★★★★

欢迎来到本网咖,请输入你的出生年份?1995
欢迎来到本网咖,请问你是否是会员?yes
请输入本次充值金额:199
你的余额可供上网时长为7小时(25元每小时)

进程已结束,退出代码0

6:whlie循环判断

(1): 计算1-100的和


a = 100
s = 1
sum = 0
while s <= 100:
    sum = sum + s
    s = s + 1
print(sum)

运行结果:

5050

进程已结束,退出代码0

(2): while和set筛选奇偶数

numbers = [1,23,45,32,345,223,1,2,3,443,223,222,444,55,2,1]

jishu = set()#使用集合,剔除重复数字
oushu = set()

while len(numbers)>0:
    number = numbers.pop()#将列表中的数字依次丢进if中处理
    if number % 2 ==0:
        oushu.add(number) #将筛选后数字的放到集合内
    else:
        jishu.add(number)
        
print('筛选后的奇数集合',jishu)
print('筛选后的偶数集合',oushu)

运行结果:

筛选后的奇数集合 {1, 3, 45, 23, 55, 345, 443, 223}
筛选后的偶数集合 {32, 2, 444, 222}

进程已结束,退出代码0

(3): 斐波那契数列:

a,b = 0,1
s = 0

while s < 10:
    s = s + 1
    print(b)
    a, b = b, a+b

运行结果:

1
1
2
3
5
8
13
21
34
55

进程已结束,退出代码0

7:for循环

(1): for循环计算1-100的和

sum = 0

for x in range(101):
    sum = sum + x
    
print(sum)

运行结果:

5050

进程已结束,退出代码0

二、 函数

1: 定义函数

def my_abs(x):
    if x >= 0:
        return x
    else:
        return -x

2: 函数的参数

(1): 位置参数

写一个计算x的n次方的函数:

def power2(x,n):
    s = 1
    while n > 0:
        s = s * x
        n = n - 1
    return s
    
print(power2(2,3))

运行结果:

8

进程已结束,退出代码0

(2): 默认参数

位置参数虽然好用,但不能默认定义

def power3(x,n=3):
    s = 1
    while n > 0:
        s = s * x
        n = n - 1
    return s
    
print(power3(2))    #默认的3次方不用传入

print(power3(2,4))

默认参数虽然好用但是最好不要指向可变参数,如list、字符串等变量。
运行结果:

8
16

进程已结束,退出代码0

(3):可变参数

可以不限不传入多少个参数,解决参数过多不够灵活的问题,通过“*”符号定义一个可变参数

定义一个计算和的函数

def sum1(*numbers):
    sum = 0
    for x in numbers:
        sum = sum + x
    return sum

print(sum1(1,2,3,4,5,6,7,8,9,10))

#或者直接将元素变成可变参数
s1 = (1,2,3,4,5,6,7,8,9)
print(sum1(*s1))

运行结果:

55
45

进程已结束,退出代码0

(4):关键字参数

除了可以用可变参数不受限制传入list 和tuple,还可以用**kw传入可关键字参数传入dict

定义:

def stulist(name,age,score,**kw):
   print (name, age,score, kw)

stulist('xiaoming','18','100',dengji='A')

运行结果:

xiaoming 18 100 {'dengji': 'A'}

进程已结束,退出代码0

关键字参数有什么用?它可以扩展函数的功能。比如,在person函数里,我们保证能接收到name和age这两个参数,但是,如果调用者愿意提供更多的参数,我们也能收到。
试想你正在做一个用户注册的功能,除了用户名和年龄是必填项外,其他都是可选项,利用关键字参数来定义这个函数就能满足注册的需求。

(5): 命名关键字参数

关键字参数虽然可以传入不收限制的参数,但是如果传入的都是无用的参数,那怎么办?这就需要对传入的参数进行检查,

def stulist(name,age,score,*args,city,sex):
   print (name, age,score, city,sex)

stulist('xiaoming','18','100',city='beijing',sex= 'man')

运行结果:

xiaoming 18 100 beijing man

进程已结束,退出代码0

3: 函数参数的组合顺序

在python中函数参数的组合顺序为:位置参数,默认参数,可变参数,命名关键字参数(如:args),关键字参数(如:*kw)

(1): 位置参数,默认参数,可变参数


def zuhe(a,b,c=0,*args):

    print('a =',a,'b =',b,'c =',c,'args =',args)

zuhe(1,2,3,4,5)

运行结果:

a = 1 b = 2 c = 3 args = (4, 5)

进程已结束,退出代码0

(2): 位置参数,默认参数,可变参数,命名关键字参数,关键字参数

def zuhe(a,b,c=0,*,d,e,**kw):

    print('a =',a,'b =',b,'c =',c,'d =',d,'e =',e,'other =',kw)

zuhe(1,2,3,d=4,e=5,g=6,h=7)

运行结果:

a = 1 b = 2 c = 3 d = 4 e = 5 other = {'g': 6, 'h': 7}

进程已结束,退出代码0

(3): 位置参数,默认参数,可变参数,命名关键字参数,关键字参数

传入参数的位置不影响命名关键字参数的检查

def zuhe(a,b,c=0,*de,d,e,**kw):

print('a =',a,'b =',b,'c =',c,'d =',d,'e =',e,'other =',kw)

zuhe(1,2,3,d=4,dd=45,e=5,g=6,h=7)

运行结果:

a = 1 b = 2 c = 3 d = 4 e = 5 other = {'dd': 45, 'g': 6, 'h': 7}

进程已结束,退出代码0

4:调用函数本身的函数叫递归函数

如:阶乘函数

def fact(n):
    if n==1:
        return 1
    return n * fact(n - 1)
print(fact(4))

运行结果:

24

进程已结束,退出代码0

三、python变量的高级特性

1: 切片

格式: 变量名[起始索引:终止索引:间隔几位]

L[1:3:2]

如取list的部分元素

L = ['a','b','c']
L[0]
L[101]
L[1:2]
L[-1]

等于:a,ab,bc,c

2: 迭代

可以对元组、列表、字符串等操作,将list、tuple、str,dict用for循环遍历出来就叫迭代。

是否可以迭代可以通过isinstance函数判断:

isinstance('对象',Iterable)

迭代格式:

for x in 'abcdef':
    print x

(1):迭代dict:

d = {'a':1,'b':2,'c':3,'d':4}

for x in d.values():

print(x)

运行结果:

1
2
3
4

进程已结束,退出代码0

迭代方式:values,items,keys 参照上边的dict操作方法。

用for in 遍历 字符串,list,dict,tuple

(2):遍历字符串

 a = 'abcdef'

for s in a :

print(s)

(3):遍历字典

d = {'a':1,'b':2,'c':3}

for k,v in d.items():

print(k,v)

运行结果:

a 1
b 2
c 3

进程已结束,退出代码0

(4):遍历列表,并带索引

L = ['a','b','c']

for k,v in enumerate(L):

print(k,v)

(5): 更简洁的迭代dict

d = {'x':'A','y':'B','z':'C'}

print([k + '=' + v  for k,v in d.items()])

3: 列表生成式

(1): 用一行语句生成100以内的奇数列表

print(list(range(1,100,2)))

运行结果:

[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99]

进程已结束,退出代码0

(2): 生成x * x

print([x*x for x in range(1,11)])

运行结果:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

进程已结束,退出代码0

4: 生成器

(1):将生成式的"[]"替换成“()",整个列表生成式就变成了生成器:generator对象,是惰性的,可以用next生成出来。

g = (x*x for x in range(1,11))
print(type(g))
print(next(g))
print(next(g))

运行结果:

<class 'generator'>
1
4

进程已结束,退出代码0

(2):既可以用next()可以一个一个的生成出来,也可以用for循环迭代出来。

g = (x*x for x in range(1,11))
print(type(g))
for x in g:
    print(x)

运行结果:

<class 'generator'>
1
4
9
16
25
36
49
64
81
100

进程已结束,退出代码0

5: 迭代器

能直接作用于for循环的叫可迭代对象。

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

推荐阅读更多精彩内容

  • 〇、前言 本文共108张图,流量党请慎重! 历时1个半月,我把自己学习Python基础知识的框架详细梳理了一遍。 ...
    Raxxie阅读 18,915评论 17 410
  • 敬爱的李老师,智慧的班主任,亲爱的众学兄们:大家好! 我是临朐柏晟金属(百叶窗,护栏)企业邓建波,今天(2018...
  • 今天我和我的姥爷一起去参加亲戚家的学子宴,我们来到这个饭店的时候,所有人的脸上都洋溢着笑容,可…… 他们的...
    小龙x阅读 349评论 0 0
  • 人们常说“等闲变却故人心,却道故人心易变”,殊不知,再美再好的东西每天看着,也难免会厌倦,更何况人呢?这原理与单曲...
    若倾言阅读 200评论 0 0