python

给你一囗甜甜゛ 提交于 2020-01-17 23:30:04

1. python与大多数其他计算机语言的做法稍有不同,其并不是把值存储在变量中,而更像把名字贴在值的上边。 变量在使用前,需要对其先赋值。

变量名可以包括字母,数字,下划线,但是变量名不能以数字开头(因为python是用c语言写的,所以变量名的规范和c语言差不多)。

符号“=”是赋值的意思,左边是名字,右边是值,不可以写反了。

2. 告诉python创建一个字符串,就要在字符串两边加上引号,可以是双引号或者是单引号。(不可以一边用双引号,一边用单引号),如果我们想打印双引号或者单引号的话,用转义字符。

3. 转义字符

比如:

str='Let's go!'#error
print(str)

上面为错误示范,那么如何输出带有像引号这样的字符串呢? 这里我们就要用到转义字符了。见下面的例子。

print('Let\'s go!') #输出:Let's go!
print('C:\\now')

如果一个字符串有很多反斜杠这样转就很麻烦,解决方法是在字符串前面加r。(在此方法下,自己尝试输出末尾带有反斜杠的字符串,看看会发生什么情况。)

4. 如何得到一个跨越多行的字符串?(我们需要使用三重引号字符串,单双引号都可以。)

str='''

黄桃芒果酸奶
细拌面
锡纸花甲
emmmm

'''
print(str)

结果:


黄桃芒果酸奶
细拌面
锡纸花甲
emmmm

5. 选择

if-else:通过缩进判断条件分支的部分。

temp=input("Input")
guess=int(temp)
if guess==7:
    print("答对了")
else:
    if guess>8:
        print("猜大了")
    else:
        print("猜小了")
print("GameOver")

6. 循环

while:

guess=0
while guess!=80:
    temp=input("Input:")
    guess=int(temp)
    if guess==80 :
        print("猜对了!")
    else:
        if guess>80:
            print("猜大了!")
        else:
            print("猜小了!")
print("游戏结束!")

for:python的for循环显得更为智能和强大。其for循环可以自动调用迭代器的next方法。

          for  目标 in 表达式

          循环体

a='LOVE'

for i in a:
    print(i,end=' ')

for i in a:
    print(i,len(i))

补充一下range(因为range可以和for搭配使用):

range(start,stop,step)(有的参数是可以舍弃的)

for i in range(2,15,3):
    print(i)
#输出:2 5 8 11 14

要掌握break和continue。

for i in range(10):
    if i%2 !=0:
        print(i)
        continue
    i+=2
    print(i)

7. and

比较运算符大于逻辑运算符

左边和右边全为true,结果才为true

print( 3>2 and 1<3 )

结果为true。

8. random 模块

用的时候导入random模块。random里有一个函数叫randint(),其会返回一个随机的整数。

import  random
guess=0
secret=random.randint(1,10)
while guess!=secret:
    temp=input("Input:")
    guess=int(temp)
    if guess==secret :
        print("猜对了!")
    else:
        if guess>secret:
            print("猜大了!")
        else:
            print("猜小了!")
print("游戏结束!")

9.  数据

①数据类型

布尔型:(True值为1,False值为0)

print(True+True)#输出2
print(True+False)#输出1
print(True*False)#输出0
print(True*True)#输出1

整型,浮点型,字符串。

②数据转换

这几个类型是可以转换的。

int()转整型:

如果是字符串转整型的话的话,内容要是数字,如果是中文,英文的话,会出错。

a='2020'
b=int(a)
print(b)#输出2020

str1='hello'
str2=int(str)
print(str2)#出错

如果是浮点型转整型的话,不会采用四舍五入机制,这样效率高。

a=5.99
b=int(a)
print(b)#输出5

float()转浮点型:

a='2020'
b=float(a)
print(b)#输出2020.0

str()转字符串:补充一下,很多人个字符串起名字喜欢用str,自己动手试试用str当变量名,在用str()这个内置函数,看看会发生什么。

str='love'
a=5e17
b=str(a)
print(b)

③获取类型信息

使用type()获取。

a=2020
print(type(a))#输出: <class 'int'>

isinstance()判断是否为该类型,返回值为布尔类型。

a='hello'
print(isinstance(a,str))#输出:True
print(isinstance('798',bool))#输出:False

10.  条件表达式

语法:x if 条件 else y

x=9
y=80
small=x if x<y else y
print(small)

11. 断言

assert这个关键字称之为断言,当该关键字后面的条件为假的时候,程序自动崩溃并抛出AssertionError的异常。一般用于为程序置 入检查点。

assert 3<4#无异常
assert 3>4#抛出异常

12. 列表

创建一个普通列表,创建一个混合列表,创建一个空列表。

a=['A','B']
print(a)#输出:['A', 'B']

b=['hello',27,39.90,[34,'world']]
print(len(b))#输出: 4

b=[]
print(b)#输出: []

append():

a=['烤冷面','酸菜鱼','锡纸花甲']
a.append('黄桃芒果酸奶')
print(a)#输出:['烤冷面', '酸菜鱼', '锡纸花甲', '黄桃芒果酸奶']

extend():使用一个列表扩展另一个列表。

a=['烤冷面','酸菜鱼','锡纸花甲']
a.extend(['猪肉脯','细拌面'])
print(a)#输出:['烤冷面', '酸菜鱼', '锡纸花甲', '猪肉脯', '细拌面']

insert(place,elem):

a=['烤冷面','酸菜鱼','锡纸花甲']
a.insert(2,'清蒸螃蟹')
print(a)#输出:['烤冷面', '酸菜鱼', '清蒸螃蟹', '锡纸花甲']

从列表中获取元素:数组名[角标]。

从列表删除元素:pop(),del,remove()。

#remove
a=['A','B','C','D','E']
a.remove('C')#元素为参数的名字,不需要根据位置。

#del
del a[2]
del a#删整个列表

#pop()
c=['A','B','C']
print(c.pop())
c.pop(1)
print(c)

列表分片:一次获取多个元素。

d=['A','B','C','D','E']
print(d[1:3])#输出:['B', 'C']
print(d[:3])#输出:['A', 'B', 'C']
print(d[1:])#输出:['B','C','D','E']
d1=d[:]#获得了一个列表的拷贝 (注意区别d1=d)

列表比较大小:

从列表的第0个元素开始比较,一旦某位的元素分成胜负,后面的元素不在进行比较。

list1=[12,34,5]
list2=[20,1,1]
print(list1>list2)#False

判断元素是否在列表中:

list1=[12,34,5]
print(34 in list1)#True
print(34 not in list1)#False

常用的BIF:

list1=[12,34,12,5,12,[12,'Tom']]
print(list1.count(12))#数某个元素个数

print(list1.index(34))#判断元素的角标
print(list1.index(12,1,5))

list1.reverse()#原地翻转
print(list1)

list3=[12,34,11,34,54,22]
list3.sort()#从小到大排序
print(list3)

list4=[12,34,11,34,54,22]
list4.sort(reverse=True)#从大到小排序
list4.sort(reverse=False)#从小到大排序
print(list4)

13. 元组

对元组不可以使用插入,删除等等这样的操作。

元组的基本操作:

t1=(12,43,21,32,56,32)#创建一个元组

print(t1[2])#获取元素
print(t1[3:])
print(t1[:5])
print(t1[2:4])

t1=t1[:2]+(888,)+t1[2:]#如何对元组插入元素

注意:

t2=(9,)#为元组
print(t2)

t3=(8)#不是元组
print(t3)

14. 字符串

字符串不可以改元素字符串,如果想要改变字符串内容,和元组类似。

字符串的内置方法:

str1="xiaomingABCxiaoming"
str2='ABC'
str3='I\tlove\tyou! '#把字符串里的tab符号转换为空格,如果不指定参数,一般为8格
str4='       hello world!   '

print(str1.capitalize())#首字母改大写

print(str2.casefold())#改小写

print(str2.center(20))#字符串居中,并生成使用空格填充至长度为20的新的字符串

print(str1.count('xi'))#'xi'出现的次数

print(str1.endswith('ing'))#看字符串是否以一某字符串结束的,startwith()类似。

print(str3.expandtabs())

print(str1.find('mi'))#找第一次出现该字符串的下标,若没有,则返回值为-1,和index()一样,不同的是,如果index要查找的没有回返回一个异常

print(str2.istitle())#所有单词以大写开始,其余字母小写,返回True,否则返回False

print(str2.lower())#字符串中所有大写字符转为小写

print(str4.lstrip())#去掉字符串左边所有的空格

print(str1.partition('AB'))#将字符串分成一个三元组(pre_sub,sub,fol_sub),如果字符串不包含sub,则返回(“原字符串'',",",",")

print(str1.replace('xiao','A',1))#将字符串’xiao‘用“A"替换,替换的次数不超过1次

print(str1.rindex('n'))#和index()功能一样,只是从右边开始

print(str1.split('i'))#以“i"分割字符串

print(str4.strip())#删除字符串前后的所有空格

字符串格式化:

#未知参数
print("{0} love {1} {2}".format("I","you","!"))

#关键字参数
print("{one}  two {third}".format(one='1',third='3'))


输出:I love you !
      1  two 3

如果以上两种一起使用,则未知数参数要在关键字参数之前。

字符串格式化符号,自己了解。

总结:

列表,元组和字符串的共同点:

1.都可以通过索引得到元素

2.默认索引值总是从0开始

3. 可以一个分片法得到一个范围内的元素的集合

4. 有很多共同的操作符

#list()可以将迭代对象转换为列表
str1="hello world !"
str5=(1,3,4,2,1)
str6=[1,3,1,3,4,2]
str1=list(str1)
print(str1)

#str()将对象转换为字符串
str2=str(str1)
print(str2)

#tuple()将一个可迭代对象转换为元组
str3='hello world!'
str3=tuple(str3)
print(str3)

#len(str)返回长度
print(len(str1))
print(len(str5))
print(len(str6))

#max(),类型要相同
print(max(str6))

#mix()
print(min(str6))

#sum()
print(sum(str6))

#sorted()
print(sorted(str6))

#reversed(),返回一个对象,如果想要看它的元素,用list()转成列表的形式
print(list(reversed(str6)))

#zip(),返回一个对象,用list()查看
a1=[1,32,43,23,43,23,76,56]
a2=[23,535,23,546,2]
a=list(zip(a1,a2))
print(a)

15. 函数

def 函数名():

         函数体

和c语言一样,python有形参和实参。

def FirstFunction():
    print("hello world!")
FirstFunction()

def SecondFuntion(num1,num2):
    print(num1+num2)
SecondFuntion(2,3)

def add(num1,num2):
    return num1+num2
print(add(2,7))

函数文档:调用函数不会输出文档,用函数名._doc_会看到函数文档的内容。

def add(num1,num2):
    '实现了一个加法'
    return num1+num2
print(add(2,7))
print(add.__doc__)

关键字参数:

#关键字参数
def ThirdFunction(word1,word2):
    print(word1+'你'+word2)
ThirdFunction('小明','好胖')
ThirdFunction('好胖','小明')
ThirdFunction(word2='好胖',word1='小明')

默认参数:

#默认参数
def Function_4(word1,word2='好胖'):
    print(word1+'你'+word2)
Function_4('小明','好瘦')
Function_4('小明')
Function_4(word2='好胖',word1='小明')

收集参数:参数个数可变

#收集参数
def Function_5(*params):
    print('参数的个数为:',len(params))
    print('第2个参数为:',params[1])
Function_5(12,43,545,'小明')

提醒一下,如果参数里即需要收集参数又需要普通参数,调用的时候应该想下面这样:

def Function_5(*params,a):
    print('参数的个数为:',len(params))
    print('第2个参数为:',params[1])
Function_5(12,43,545,a='小明')

局部和全局变量:局部变量是用栈存储的,所以,出了函数便无法访问了。

def Function_1 (num1,num2):
    sum=num1+num2
    return sum
num1=float(input('请出入:'))
num2=float(input('请输入:'))
num=Function_1(num1,num2)
print(num)
#print(sum)无法访问

函数里可以访问全局变量。但是,如果在函数里修改全局变量的值,其实,python会自动创建一个同名的局部变量。

def Function_1 (num1,num2):
    sum=num1+num2
    num=1000
    print(num)#局部变量,栈
    return sum

num1=1
num2=2
Function_1(num1,num2)
num=888
print(num)

global关键字:

#global关键字
def Function():
    global a
    a=666
    print(a)

a=888
Function()
print(a)

内嵌函数:内部函数的作用域在外部函数之内。在外部函数之外无法调用内部的函数。

#内嵌函数
def Function_1():
    print("Function 1 正在被调用!")
    def Function_2():
        print("Function 2 正在被调用")
    Function_2()

Function_1()

闭包:

#闭包
def funX(x):
    def funY(y):
        return x*y
    return funY

##方法一
i=funX(4)
print(i(10))

##方法二
print(funX(4)(10))


#内部函数直接调用外部函数的局部变量是不行的
##方法一
def Fun1():#通过容器存放,因为容器不是通过栈存放,所以便量不会被屏蔽掉
    x=[5]
    def Fun2():
        x[0]*=x[0]
        return  x[0]
    return Fun2()
print(Fun1())

##方法二,nonlocal关键字
def Fun1():
    x=5
    def Fun2():
         nonlocal x
         x*=x
         return x
    return Fun2()
print(Fun1())

lambda:python写一些执行脚本时,使用lambda可以省下定义函数的过程。

#普通函数
def add(x,y):
    return x+y
print(add(2,4))

#lambda函数,更为简洁
f=lambda x,y:x+y
print(f(2,3))
filter和lambda:
#filter过滤任何非true的内容
print(list(filter(None,[1,0,True])))

def Function(x):
    return x%2
t=range(10)
show=filter(Function,t)
print(list(show))

print(list(filter(lambda x:x%2,range(10))))

16. 递归

def F(x):
    if x==1:
        return 1
    else:
        return x*F(x-1)
number=int(input("请输入:"))
print("%d的阶乘是%d。"% (number,F(number)))

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!