python大讲堂:Python入门讲解以及基本语法讲解

本篇博客主要是针对python初学者,以及入门者对python有更深的认识,其中多以代码案例演示

python官网:https://www.python.org/

Python是一种计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。

1、python介绍

一种面向对象,面向函数的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议[2]. Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中[3] 有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。

2、python的安装

详见:https://blog.csdn.net/qq_34514415/article/details/80201543

3、python的注释以及代码

1、单行注释:以#开头,#右边的所有东西当做说明,而不是真正要执行的程序,起辅助说明作用
2、多行注释:’’’多行注释’’’可以写多行的功能说明
3、Python乱码问题
由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:

# -*- coding:utf-8 -*-
# coding=utf-8

4.python的变量以及类型

变量:在程序执行过程中变化的量。
常量:在程序代码执行过程中不变的量
变量三要素:变量名称、变量类型、变量的值
python中变量的类型

字符串

字符串是以单引号’或双引号"括起来的任意文本,比如’abc’,“xyz"等等。请注意,’'或”“本身只是一种表示方式,不是字符串的一部分,因此,字符串’abc’只有a,b,c这3个字符。如果’本身也是一个字符,那就可以用”"括起来,比如"I’m OK"包含的字符是I,’,m,空格,O,K这6个字符。
如果字符串内部既包含’又包含"怎么办?可以用转义字符\来标识,比如:
‘I’m “OK”!’
表示的字符串内容是:
I’m “OK”!
转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\表示的字符就是\,可以在Python的交互式命令行用print()打印字符串看看:
如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r’‘表示’‘内部的字符串默认不转义,可以自己试试:
如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用’’’…’’‘的格式表示多行内容,
print(’’‘line1
line2
line3’’’)

布尔值

布尔值和布尔代数的表示完全一致,一个布尔值只有True、False两种值,要么是True,要么是False,在Python中,可以直接用True、False表示布尔值(请注意大小写),也可以通过布尔运算计算出来
布尔值可以用and、or和not运算。
and运算是与运算,只有所有都为True,and运算结果才是True:

空值

空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。
###5.常见的数据类型转换
函数 说明

int(x [,base ]) 将x转换为一个整数
long(x [,base ]) 将x转换为一个长整数
float(x ) 将x转换到一个浮点数
complex(real [,imag ]) 创建一个复数
str(x ) 将对象 x 转换为字符串
repr(x ) 将对象 x 转换为表达式字符串
eval(str ) 用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s ) 将序列 s 转换为一个元组
list(s ) 将序列 s 转换为一个列表
chr(x ) 将一个整数转换为一个字符
unichr(x ) 将一个整数转换为Unicode字符
ord(x ) 将一个字符转换为它的整数值
hex(x ) 将一个整数转换为一个十六进制字符串
oct(x ) 将一个整数转换为一个八进制字符串

6、标识符和关键字

  • 1、标识符
    开发人员在程序中自定义的一些符号和名称,标示符是自己定义的,如变量名 、函数名等

  • 2、标示符的规则
    标示符由字母、下划线和数字组成,且数字不能开头。不能有特殊符号:,/,;,#

7.关键字

python一些具有特殊功能的标示符,这就是所谓的关键字
关键字,是python已经使用的了,所以不允许开发者自己定义和关键字相同的名字的标示符
查看关键字:(保留字):
And as assert break class continue def
del elif else except exec finally for
from global if in import is lambda
not or pass print raise return try
while with yield

#查看关键字

import  keyword
print(keyword.kwlist)

8.输入输出

·格式化输出
print("123")

print()函数也可以接受多个字符串,用逗号“,”隔开,就可以连成一串输出:
 print('The quick brown fox', 'jumps over', 'the lazy dog')

直接打印结果输出
print(100 + 200)

·格式化输出

在Python中,采用的格式化方式和C语言是一致的,用%实现,举例如下:
 'Hello, %s' % 'world'
'Hello, world'

常见的占位符:
%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数

代码示例:
#输出数字
print('%d'%(2))
#输出字符串
print('%s'%('张三'))
#输出浮点数
print('%0.2f'%(1.234))

结果:
2
张三
1.23

python2版本中

  1. 1.1 raw_input()
    在Python中,获取键盘输入的数据的方法是采用 raw_input 函数。
    看如下示例:
  2. 注意:
    raw_input()的小括号中放入的是,提示信息,用来在获取数据之前给用户的一个简单提示
    raw_input()在从键盘获取了数据以后,会存放到等号右边的变量中
    raw_input()会把用户输入的任何值都作为字符串来对待
  3. 1.2 input()
    input()函数与raw_input()类似,但其接受的输入作为是表达式。
    input()接受表达式输入,并把表达式的结果赋值给等号左边的变量
    raw_input()输入的都当成字符串(和Python3的input功能一样)

python3版本中

没有raw_input()函数,只有input()
并且 python3中的input与python2中的raw_input()功能一样

8.运算符

  • 算数运算符
    在这里插入图片描述
  • 赋值运算符
    在这里插入图片描述
  • 复合赋值运算符
    在这里插入图片描述
  • 逻辑运算符
    在这里插入图片描述
  • 比较(关系)运算符
    在这里插入图片描述

代码示例:

num=input("请输入:")
num=int(num)    -----注意这里需要强转类型
if num<10:
    print("儿童")
elif num<20:
    print("少年")
else:
    print("成年了")

if嵌套
if 条件1:
满足条件1 做的事情1
满足条件1 做的事情2
…(省略)…
if 条件2:
满足条件2 做的事情1
满足条件2 做的事情2
…(省略)…
说明:
外层的if判断,也可以是if-else
内层的if判断,也可以是if-else
根据实际开发的情况,进行选择
循环结构
while循环的格式
while 条件:
条件满足时,做的事情1
条件满足时,做的事情2
条件满足时,做的事情3
…(省略)…
pass 和while没有关系
while循环应用

1. 计算1~100的累积和(包含1和100)
参考代码如下:
#encoding=utf-8
i = 1
sum = 0
while i<=100:
    sum = sum + i
    i += 1
print("1~100的累积和为:%d"%sum)
  • for循环
    像while循环一样,for可以完成循环的功能。
    在Python中 for循环可以遍历任何序列的项目,如一个列表或者一个字符串等。
    for循环的格式
    for 临时变量 in 列表或者字符串等:
    循环满足条件时执行的代码
    else:
    循环不满足条件时执行的代码

九九乘法表:

for i in range(1,10):
    for j in range(1,i+1):
        print("%d * %d = %d"%(j,i,i*j),end="\t")
    print()

字符串遍历:

for i in "abcdefg":
    print(i)

9.逻辑判断和循坏

if elif else 条件判断
语法:
if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>
代码示例:

num=input("请输入:")
num=int(num)    -----注意这里需要强转类型
if num<10:
    print("儿童")
elif num<20:
    print("少年")
else:
    print("成年了")
  • if嵌套
    if 条件1:
    满足条件1 做的事情1
    满足条件1 做的事情2
    …(省略)…
    if 条件2:
    满足条件2 做的事情1
    满足条件2 做的事情2
    …(省略)…
    说明:
    外层的if判断,也可以是if-else
    内层的if判断,也可以是if-else
    根据实际开发的情况,进行选择
    循环结构
    while循环的格式
    while 条件:
    条件满足时,做的事情1
    条件满足时,做的事情2
    条件满足时,做的事情3
    …(省略)…
    pass 和while没有关系
    while循环应用

    1. 计算1~100的累积和(包含1和100)
      参考代码如下:
#encoding=utf-8
i = 1
sum = 0
while i<=100:
    sum = sum + i
    i += 1
print("1~100的累积和为:%d"%sum)
  • for循环
    for循环
    像while循环一样,for可以完成循环的功能。
    在Python中 for循环可以遍历任何序列的项目,如一个列表或者一个字符串等。
    for循环的格式
    for 临时变量 in 列表或者字符串等:
    循环满足条件时执行的代码
    else:
    循环不满足条件时执行的代码
  • 九九乘法表:
for i in range(1,10):
    for j in range(1,i+1):
        print("%d * %d = %d"%(j,i,i*j),end="\t")
    print()
  • 字符串遍历
for i in "abcdefg":
   print(i)

10.集合类型

  • 1)字符串
    下表索引
    字符串实际上就是字符的数组,所以也支持下标索引。
    如果有字符串:name = ‘abcdef’,在内存中的实际存储如下:

代码演示:

for i in "abcdefg":
    print(i)
  • 2)切片(分片)
    切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。
    切片的语法:[起始:结束:步长]
    步长:表示下标变化的规律。
    注意:选取的区间属于左闭右开型,即从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身)。

    #查询指定下表内的元素
      name='abcdefg'
      print(name[0:3])
      #abc --结果
      
      #查询指定下表内的元素
      name='abcdefg'
      print(name[0:3])
      #abc --结果
      
      #指定步长的元素[start:end:offset]
      print(name[::-2])
      #geca  --结果
      print(name[1:5:2])
      #bd  --结果
    
  • 字符串常见操作

     mystr = 'hello world and bjsxt yunshuxueyuan sxt beijing'
      #返回元素在字符串中出现的起始索引位置
      print(mystr.index("sxt"))
      #查找指定元素的起始位置-找不到则返回负数-1
      print(mystr.find("sxt"))
      print(mystr.rfind("sxt"))#从右侧查找
      #count计数  --统计指定元素出现的次数
      print(mystr.count("sxt"))
      #split按照执行字符切割字符串,以 str 为分隔符切片 mystr,如果 maxsplit有指定值,则仅分隔 maxsplit 个子字符串
      strs = mystr.split(" ");
      print(strs)
      #capitalize将字符串第一个字符大写
      print(mystr.capitalize())
      #title将每个单词的首字母转为大写
      print(mystr.title())
      #ljust返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串
      print(mystr.ljust(100,"*"))
      #结果:hello world and bjsxt yunshuxueyuan sxt beijing*****************************************************
      #将字符串放在右侧,左侧用*号填充
      print(mystr.rjust(100,"*"))
      #结果:*****************************************************hello world and bjsxt yunshuxueyuan sxt beijing
      print(mystr.center(100,"*"))
      #结果:**************************hello world and bjsxt yunshuxueyuan sxt beijing***************************
      #删除 mystr 左边的空白字符
      print(mystr.rstrip())
      #partition(str)以字符串中指定元素将字符切割成三部分
      print(mystr.partition("sxt"))
      print(mystr.rpartition("sxt"))
      #isalpha判断指定字符创是否全是字母,是返回True  不是返回False
      print("abc".isalpha())#True
      #isdigit 指定字符串中是否只包含数字
      print("123".isdigit()) #True
      #isalnum 是否只包含字母或数组
      print("123asdf".isalnum())
      #join 和原来的字符串构造新的字符串-将新的字符串分布到原来的字符串中
      lines="abcdef"
      print(lines.join("1234"))#1abcdef2abcdef3abcdef4
    

    11.列表

    Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。

    • 列表的相关操作
    #添加元素("增"append, extend, insert)
    l=["a","c","d","e"]
    print(l)
    #append可以将另一个集合中的元素逐一添加到列表中  将集合当做元素直接插入
    l2=["o","b"]
    #l.append(l2)
    #print(l)#['a', 'c', 'd', 'e', ['o', 'o']]
    #insert  在指定位置index前插入元素object
    l.insert(1,l2)
    print(l)
    l.insert(2,66)
    print(l)
    #查找元素("查"in, not in, index, count)
    

    #in 查看至指定字符串是否出现在另一个字符串中

    l3="hello sxt  hello  java beijing"
      if "sxt" in l3:
      print("存在")
      else:
      print("不存在")
    
    #index和count与字符串中的用法相同
    name=[1,2,3,4,5,6]
    #删除元素("删"del, pop, remove)
    #del:根据下标进行删除,其实可以删除所有变量
    del name[0]
    print(name)
    #pop:默认删除最后一个元素
    name.pop()
    print(name)
    #remove:根据元素的值进行删除第一个
    name.remove(name[1])
    print(name)
    #排序(sort, reverse)
    name2=[12,21,33,4,53,6]
    name2.sort()
    print(name2)#升序
    name2.sort(reverse=True)
    print(name2)#降序
    name2.reverse()
    print(name2)#翻转
    

12.元组

Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。
元组的元素操作方式和列表基本相同,但是不能修改其中的元组
代码演示:

#元组定义形式
tuple1=(12,"abc",True,12.3,[666,777])
print(tuple1)
#查找元组中元素的下表
print(tuple1.index(12))
#不能改变元组的元素但可以改变元组里列表元素里的值
tuple1[4][0]=777
tuple1[4][1]=666
print(tuple1)
#创建只有一个元素的元组
tuple2=(12)
print(type(tuple2)) #<class 'int'> 不是元组
tuple3=(12,)
print(type(tuple3))#<class 'tuple'> 元组

13.字典

字典的介绍
Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。

#字典的定义
dic1={"name":"zhangsan","age":19}
#字典的常见操作
#查看元素
print(dic1)
#遍历查看value
for i in  dic1.keys():
    print(dic1[i])
for i in dic1.values():
    print(i)
#遍历查看key
for i in dic1.keys():
    print(i)
#遍历查看k v
for i,v in dic1.items():
    print(i,v)
#对字典进行删除操作
#del clear()
#根据key删除
del dic1["name"]
print(dic1)
#清空
dic1.clear()
print(dic1)
#对字典进行修改操作
#字典的每个元素中的数据是可以修改的,只要通过key找到,即可修改
dic1["name"]="lisi"
print(dic1)
dic1["age"]=12
print(dic1)
#添加元素
dic1["address"]="beijing"
print(dic1)#{'name': 'lisi', 'age': 12, 'address': 'beijing'}
  • 总结:
    1、请务必注意,dict内部存放的顺序和key放入的顺序是没有关系的。
    2、和list比较,dict有以下几个特点:
    1)查找和插入的速度极快,不会随着key的增加而变慢;
    2)需要占用大量的内存,内存浪费多。
    3)而list相反:查找和插入的时间随着元素的增加而增加;占用空间小,浪费内存很少。
    所以,dict是用空间来换取时间的一种方法。
    3、dict可以用在需要高速查找的很多地方,在Python代码中几乎无处不在,正确使用dict非常重要,需要牢记的第一条就是dict的key必须是不可变对象。这是因为dict根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了。这个通过key计算位置的算法称为哈希算法(Hash)。
    要保证hash的正确性,作为key的对象就不能变。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key

  • 总结:
    1、可变类型,值可以改变:
    列表 list
    字典 dict
    2、不可变类型,值不可以改变:
    数值类型 int, long, bool, float
    字符串 str
    元组 tuple
    set (没有value的字典)

14、函数

  • 定义函数的格式如下:
    def 函数名():
    代码演示:
#函数定义
def fun1():
    print("this is a function !!!")
#函数名直接调用函数
fun1()
#定义一个有参,有多个返回值函数
def sumd(a,b):
    return a+b,a*b,a-b,a%b,a/b
print(sumd(1,1))#返回结果是一个元组(2, 1, 0, 0, 1.0)

#定义默认的有参函数
def fun2(a=10,b=20):
    return  a+b
print(fun2())#返回30  默认值计算
#缺省传参
print(fun2(100))#结果:120  默认传递给第一个参数
print(fun2(b=40))#结果40   默认10 指定b20  返回结果
#不定长参数
#有时可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,声明时不会命名
def fun3(a,*args,**kwargs):   #*args:表示列表    **kwargs表示字典
    print("a=",a)
    for i in args:
        print("args:",args)
    for i,v in kwargs.items():
        print("kwargs:",i,v)

fun3("zhngsan",[666,777],name="zhangsan",age=10)
#全局变量
num=100
def fun6():
    print(num)#100
fun6()
print(num)#100
#全局变量
num=100
def fun6():
    num=1000 #局部变量
    print(num)#1000
fun6()
print(num)#100
#全局变量
num=100
def fun6():
    global num #全局变量
    print(num)#100
    num=1000
    print(num)#1000
fun6()
print(num)#1000
  • 递归函数
    什么是递归函数
    通过前面的学习知道一个函数可以调用其他函数。
    在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。
递归函数
#斐波拉契数列
def fun10(a):
    if a<=2:
        return 1
    else:
        return fun10(a-1)+fun10(a-2)
for i in range(1,21):
    print(fun10(i),end="\t")
#结果:1  1  2  3  5  8  13 21 34 55 89 144    233    377    610    987    1597   2584   4181   6765
  • 匿名函数
    语法格式:
    lambda [arg1 [,arg2,…argn]]: expression
#匿名函数:
c=lambda a,b:a*b
print(c(1,2))#2
def fun11(a,b,opt):
    return("result:",opt(a,b))
opt=lambda a,b:a**b

print(fun11(11,11,opt))
  • 内置函数排序
#按姓名排序
stus = [ {"name":"zhangsan", "age":18}, {"name":"lisi", "age":19}, {"name":"wangwu", "age":17} ]
stus.sort(key=lambda x:x["name"])
print("按照姓名排序:",stus)
#按照年龄排序
stus.sort(key=lambda x:x["age"])
print("按照年龄排序:",stus)

15.文件的操作

打开文件
在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件
open(文件名,访问模式)

f = open(r'd:\nata\test.txt', 'w')

访问模式参数:
访问模式

  • 关闭文件
    close( )
  • 读文件
import os
#读取文件
f=open("e://test.txt","r");
context=f.read(1024);
print(context)
#关流
f.close()
  • 项文件中写入数据
#向文件中写数据
f1=open("e://test.txt","w")
f1.write('hello world');
f1.close()

#向文件里追加内容
f2=open("e://test.txt","a+")
f2.write('\nhello beijing');
f2.close()
  • 查看文件指定位置—定位
f3=open("e://test.txt","r+")
# context=f3.read(3);
# print(context)#hel
# position=f3.tell();
# print(position)#3  --读取到哪一个位置了

#定位读取
f3.seek(3)
context=f3.read(25)
print(context)
  • 操作目录
#遍历指定路径下的所有目录以及文件
print(os.listdir("e://"))
#创建目录
os.mkdir("e://a.txt")
#删除目录
os.rmdir("e://a.txt")

未完待续…请关注博主,继续更新下一篇,更加详细讲解

python实时资讯:

了解跟多— 想学习Python做数据分析工作需要掌握哪些知识

了解跟多—AI自学时代:Python、JavaScript、Swift、Java如何选?

猜你喜欢

转载自blog.csdn.net/Mirror_w/article/details/89281041