[Python学习]一.基础语法

为什么学python

程序语言没有最好,只有最适合。

作为一名初学者,我非常推荐你学习Python,为啥?一方面是因为它具有语法清晰、代码友好、易读性高的特点,同时Python拥有强大的第三方库函数,包括网络爬取、数据分析、可视化、人工智能等;

另一方面Python既是一门解释性编程语言,又是面向对象的语言,其操作性和可移植性高,被广泛应用于数据挖掘、信息采集、人工智能、网络安全、自动化测试等领域。甚至,很多小学生、高中课程和计算机二级也都陆续增加了Python。

[Python学习]一.基础语法_第1张图片

[Python学习]一.基础语法_第2张图片

Python优势

Python最大的优势在于效率。有时候程序员或科研工作者的效率比机器的效率更重要,对于很多复杂性的功能,使用更加清晰的语言能给程序减少更多的负担,从而大大增强程序的质量,其易学性和扩展性也能让新手很快上手。虽然Python底层运行速度要比C语言慢,但Python清晰的结构能解放程序员的时间,同时很方便的和其他编程语言代码(如C语言)融合在一起。

所以,从来没有一种编程语言可以像Python这样同时扎根在这么多领域,并且Python支持跨平台操作,也支持开源,拥有强大的第三方库。尤其随着人工智能的持续火热,Python在IEEE近几年发布的最热门语言中多次排名第一,越来越多的程序爱好者、科技关注者也都开始学习Python。

[Python学习]一.基础语法_第3张图片

一.基础语法

1.缩进与注释

缩进

不同于其他语言,在Python中通过缩进来标明代码的层次关系。1个缩进等于4个空格,它是Python语言中标明程序框架的唯一手段。

在Python中,同一个语句块中每条语句都是缩进的,并且缩进量相同,当回退或已经闭合语句块时,需要回退至上一层的缩进量,表示当前块结束。下面是C语言和Python语法的对比,其中C语言用大括号来区分层次关系,Python通过缩进来区分。

缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。

[Python学习]一.基础语法_第4张图片

Python引号

Python 可以使用引号( ’ )、双引号( " )、三引号( ‘’’ 或 “”" ) 来表示字符串,引号的开始与结束必须是相同类型的。其中三引号可以由多行组成,编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释。

word = 'eastmount'
sentence = "娜璋AI安全之家"
paragraph = """这是一个段落。
包含了多个语句"""

注释

注释是用于说明代码信息的,注释代码是不执行的。Python注释主要包括两种:

1.行注释:采用#开头进行单行注释,如“#定义一个变量”

# 第一个注释
print ("Hello World!")  # 第二个注释

2.块注释:多行说明的注释采用’’'或"""开头和结尾,比如使用Python集成开发环境Spyder新建文件时,通常有一段注释说明。

"""
Created on Sat Sep 16 10:34:31 2023
@author: gyp
"""

多行语句

Python语句中一般以新行作为语句的结束符。但是我们可以使用斜杠( \)将一行的语句分为多行显示,如下所示:

total = item_one + \
        item_two + \
        item_three

语句中包含 [], {} 或 () 括号就不需要使用多行连接符。如下实例:

days = ['Monday', 'Tuesday', 'Wednesday',
        'Thursday', 'Friday']

2.变量与常量

变量

变量是程序中值可以发生改变的元素,是内存中命名的存储位置,变量代表或引用某值的名字,比如希望用N代表3,name代表“hello”等。其命名规则如下:

变量名是由大小写字符、数字和下划线(_)组合而成的。
变量名的第一个字符必须是字母或下划线(_)。
Python中的变量是区分大小写的,比如“TEST”和“test”是两个变量。
在Python中对变量进行赋值时,使用单引号和双引号是一样的效果。
注意,Python中已经被使用的一些关键词不能用于声明变量,关键词表如下:
['and', 'as', 'assert', 'break', 'class', 'continue', 'def',
 'del', 'elif',  'else', 'except', 'exec', 'finally', 'for', 'from', 
 'global', 'if', 'import', 'in',  'is', 'lambda',  'not', 'or', 
 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

不同于C/C++/Java等语言,Python中的变量不需要声明,就可以直接使用赋值运算符对其进行赋值操作,根据所赋的值来决定其数据类型,下图为未声明输出其类型。

[Python学习]一.基础语法_第5张图片

常量

常量是指程序中值不发生改变的元素,一旦初始化后就不能对其修改的固定值,它是内存中用来保存固定值的单元。

由于某种原因,Python并未提供如C/C++/Java一样的const修饰符,换言之,python并没有定义常量的关键字。但是Python可以使用对象的方法来创建常量,比如通过const.py文件,将const类注册到sys.modules全局字典中。

3.输入和输出

输出

输出使用print()函数实现,包括输出字符信息或变量,

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
#objects --表示输出的对象。输出多个对象时,需要用 , (逗号)分隔。

#sep -- 用来间隔多个对象。

#end -- 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符。

#file -- 要写入的文件对象。

如果需要输出多个变量,则使用采用逗号连接,如print(a,b,c)。简单示例如下图所示,print()函数可以输出各种类型的变量。

[Python学习]一.基础语法_第6张图片

格式化输出的三种方式:

(1)f 转化的格式化输出方式

只需要在我们要格式化输出的内容开头引号的前面加上 f ,在字符串内要转义的内容用 {} 括起来即可
模板 : print(f'xxx{aa}xxx')
a = 'apple'
price = 12.4
 
print(f'这里有{a}')
>>>这里有apple
print(f'价值{price}')
>>>价值12.4

(2)% 格式化输出的方法

模板:print('xxx%sxxx' % a)
[Python学习]一.基础语法_第7张图片
a = 'apple'
price = 12
 
print('输出:%c' % 33)     #将我们输入的数字按照ASCII码转换成对应的字符  33 对应的是!
>>>输出:!
print('输出:%s' % a)      # 转义输出字符串类型的数据
>>>输出:apple
print('输出:%d' % price)  # 将数字类型的数据类型转义输出整数
>>>输出:12
print('输出:%e' % 12)    #将数字转化成科学计数法的形式
>>>输出:1.200000e+01
print('输出:%o' % price)    #将整数转化成八进制数据
>>>输出:14
print('输出:%x' % price)   #将整数转化成十六进制数据
>>>输出:c
print('输出:%f' % price)    #格式化浮点数,默认保留小数点后六位
>>>输出:12.000000
[Python学习]一.基础语法_第8张图片
print('输出:%.2f' % 3.52311)              #点后面跟上保留小数的位数
>>>输出:3.52
print('输出:%23s'%'你好')              # 小数点前面加数字用于表示输出的结果向右平移几个空格
>>>输出:                     你好
print('输出:%+d' % 12)                    #用于在输出数字结果前面加上正负号
>>>输出:+12
print("输出:%*.*f" % (10,3,12.3432))   #用*代替字符串中的变量,方便修改输出时的格式要求
>>>输出:    12.343

(3).format() 格式化输出的方法

模板 : print('xxx{}xxx'.format(x,x))
[Python学习]一.基础语法_第9张图片
print('输出:{:&>8}'.format('牛牛'))
>>>输出:&&&&&&牛牛
print('输出:{:f}'.format(12))
>>>输出:12.000000
print('输出:{:.2f}'.format(12))
>>>输出:12.00
print('输出:{:+}'.format(12))
>>>输出:+12
print('输出:{:%}'.format(0.5))
>>>输出:50.000000%
print('输出:{:.2%}'.format(0.5))
>>>输出:50.00%
print('输出:{:e}'.format(0.5))
>>>输出:5.000000e-01
print('输出:{:b}'.format(5))
>>>输出:101

输入

Python输入主要包括input()和raw_input()两个函数。

(4)input()

input()函数从控制台获取用户输入的值,

格式为:<变量>=input(<提示性文字>)。

获取的输入结果为用户输入的字符串或值,并保存在变量中。

输入字符串和整数实例如下,其中type()函数用于查找变量的类型。

>>> str1 = input("input:")
input:"I am a teacher"
>>> print(str1)
I am a teacher

>>> age = input("input:")
input:25
>>> print(age,type(age))
25 
>>> 

4.赋值与表达式

赋值

Python中的赋值语句是使用等号(=)给变量直接赋值,如“a=10”。多语句赋值:

  • <变量1>,<变量2>,…,<变量n> = <表达式1>,<表达式2>,…,<表达式n>

>>> a,b,c = 10,20,(10+20)/2
>>> print(a,b,c)
10 20 15.0
>>>

表达式

表达式是程序中产生或计算新数据值的一行代码,赋值表达式如a=10,通常由变量、常量或操作符号产生表达式。定义表达式注意一下几点:

使用变量之前必须对其赋值,使用赋值表达式对其赋值。
表达式也需要遵循句首缩进规律,且不能改变其空格数量。
表达式中可以适量增加空格,使程序可读性更高,但空格不能分割变量的命名方式,比如“a = b + c”,在运算符之间适当增加空格。

二.数据类型

1.数字类型

Python常见的数字类型包括整数类型、浮点数类型、复数类型。

*整数类型:对应的数学中的整数,其返回类型为int型,如10、25等;long为长整型,也可以代表八进制和十六进制。

*浮点数类型:带有小数点的数字,返回类型为float型,如3.14、2.1e2等。

*复数类型:Python复数分为两部分,形如a + bj,其中a为实部,b为虚部,返回类型为complex,例如-12.3 + 8j。复数可以通过.real获取实部数据,.imag获取虚部数据。

>>> z = -12.3 + 8j
>>> print(z, type(z))
(-12.3+8j) 
>>> print(z.real, z.imag)
-12.3 8.0

注意:Python中数字类型是可以相互转换的,其中浮点数调用int()函数转换为整数,如int(3.14)返回结果3,整数调用float()转换为小数,浮点数调用complex()函数转换为复数。

2.字符串类型

字符串类型在Python中是指需要用单引号或双引号括起来的一个字符或字符串。该类型调用三三时时时type(‘Python’)返回的结果是str类型。一般记为:

  • s=“a1a2···an”(n>=0)

字符串表示一个字符的序列,其最左端表示字符串的起始位置,下标为0,然后依次递增。字符串对应的编号称为“索引”,比如str1=‘Python’,则str1[0]获取第一个字符,即“P”字母,并且字符串提供了一些操作和函数共用户使用,比如len(str1)计算字符串长度,其返回结果为6。

counter = 100         #赋值整型变量
miles = 1000.0        #浮点型
name = "Eastmount"    #字符串

python的字串列表有两种取值顺序:

  • 从左到右索引默认0开始的,最大范围是字符串长度少1

  • 从右到左索引默认-1开始的,最大范围是字符串开头

[Python学习]一.基础语法_第10张图片

牢记:左开右闭

>>> s = 'abcdef'
>>> s[1:5]
'bcde'

#字符串连接:+
a = "Hello "
b = "World "
print(a + b)
Hello World 

#重复输出字符串:*
print(a * 3)
Hello Hello Hello 

#通过索引获取字符串中字符[]
print(a[0])
H

#字符串截取[:] 牢记:左开右闭
print(a[1:4])
ell

#判断字符串中是否包含给定的字符: in, not in
print('e' in a)
print('e' not in a)
True
False

#join():以字符作为分隔符,将字符串中所有的元素合并为一个新的字符串
new_str = '-'.join('Hello')
print(new_str)
H-e-l-l-o

#字符串单引号、双引号、三引号
print('Hello World!')
print("Hello World!")

转义字符 \
print("The \t is a tab")
print('I\'m going to the movies')
The      is a tab
I'm going to the movies

3.列表类型

列表是Python中非常重要的一个数据类型,它是在中括号([ ])中用逗号分隔的元素集合,列表中的元素可以通过索引进行单个访问,并且每个元素之间是有序的。例如:

>>> list1 = [1, 2, 3, 4, 5]
>>> print(list1)
[1, 2, 3, 4, 5]
>>> print(list1[0])
1
>>> print(type(list1))


>>> list2 = ['I', 'am', 'a', 'teacher']
>>> print(list2)
['I', 'am', 'a', 'teacher']
>>> print(list2[3])
teacher
>>> 

列表可以完成大多数集合类的数据结构实现。它支持字符、数字、字符串甚至可以包含列表(即嵌套)。列表用 [ ] 标识,是Python最通用的复合数据类型。

[Python学习]一.基础语法_第11张图片

列表中的常见方法如下表所示,假设存在列表list1 = [4, 2, 1, 5, 3]。

[Python学习]一.基础语法_第12张图片

4.元组类型

元组是和列表类似的一种数据类型,它采用小括号定义一个或多个元素的集合,其返回类型为tuple。示例如下:

>>> t1 = (12, 34, 'Python')
>>> print(t1)
(12, 34, 'Python')
>>> print(type(t1))

>>> print(t1[2])
Python
>>> 

注意:可以定义空的元组,如t2=(),元组可以通过索引访问,比如上述代码t1[2]访问第3个元素,即“Python”。当元组定义后就不能进行更改,也不能删除,这不同于列表,由于元组的不可变特性,它的代码更加安全。

以下是元组无效的,因为元组是不允许更新的,而列表是允许更新的。错误提示:TypeError: ‘tuple’ object does not support item assignment,在编程构成中出错或BUG是非常正常的,莫慌,解决掉它。

# -*- coding: UTF-8 -*-
tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )
list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]
tuple[2] = 1000    # 元组中是非法应用
list[2] = 1000     # 列表中是合法应用
[Python学习]一.基础语法_第13张图片

5.字典类型

字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。

列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

字典是针对非序列集合而提供的,字典用"{ }"标识,由键值对(< Key > < Value >)组成,字典是键值对的集合,其类型为dict。键是字典的索引,一个键对应着一个值,通过键值可查找字典中的信息,这个过程叫做映射。

示例如下,通过键值对可以获取“4”对应的“Guiyang”。

>>> dic = {"1":"Beijing","2":"Shanghai","3":"Chengdu","4":"Guiyang"}
>>> print(dic)
{'1': 'Beijing', '3': 'Chengdu', '2': 'Shanghai', '4': 'Guiyang'}
>>> print(dic["3"])
Chengdu

字典键值对灵活应用非常重要,尤其是网络爬虫Json格式解析,后面我们实际案例中会用到。下面给出一段简单代码,重点是keys()和values()用法.

dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"

tinydict = {'name': 'runoob','code':6734, 'dept': 'sales'}
 
print(dict['one']) #输出键为one的值
print(dict[2])     #输出键为2的值
print(tinydict)    #输出完整字典
print(tinydict.keys())   #输出所有键
print(tinydict.values()) #输出所有值
[Python学习]一.基础语法_第14张图片

三.字符串的操作

字符串的基本操作包括求长度拼接重复操作索引切片等等。

假设str1字符串为“hello”,str2字符串为“world”,
len(str1)计算字符串str1长度为5;
str1+str2拼接后的结果为“helloworld”;
str1*3字符串重复结果为“hellohellohello”。
  1. 字符串切片

定义为s[i:j:step],其中step表示切片的方向,默认起点从0开始,终点不写切到最后。

同样,如果增加step参数且为负数,表示从反向切片。

str1 = 'abcdefghijklmn'
print(str1[3:6])
# def

str1 = 'abcdefghijklmn'
print(str1[-1:-5:-1])
# nmlk

2.find函数

用法:从字符串中查找子字符串,返回值为子串所在位置的最左端索引。如果没有找到则返回-1,

扩展的rfind()方法表示从右往左方向查找,常用于正则表达式爬取数据

str1 = 'abcdefghijklmn'
num = str1.find('def')
print(num)
# 3
num1=str1.rfind('jkl')
print(num1)
# 9

3.split函数

用法:字符串分割函数,将字符串分割成序列,返回分割后的字符串序列。

如果不提供分割符,程序将会把所有空格作为分隔符。

[Python学习]一.基础语法_第15张图片

4.strip函数

用法去除开头和结尾的空格字符(不包含字符串内部的空格),同时S.strip([chars])可去除指定字符。扩展的函数lstrip()去除字符串开始(最左边)的所有空格,rstrip()去除字符串尾部(最右边)的所有空格。

str1 = "    I am a teacher    "
print(str1.strip())

print(str1.strip().strip('I'))

#I am a teacher
# am a teacher

5.join函数

用法:通过某个字符拼接序列中的字符串元素,队列中元素必须是字符串,返回一个拼接好的字符串函数,可以认为join()函数是split()函数的逆方法。

采用空格(’ ')拼接字符串[‘I’,‘am’,‘a’,‘teacher’],代码及输出结果如下。
>>> num = ['I','am','a','teacher']
>>> sep = ' '
>>> str1 = sep.join(num)
>>> print str1
I am a teacher
>>> 

你可能感兴趣的:(Python学习,python,学习,数据分析)