python基础语法学习一

大部分参考自菜鸟教程

文中出现的代码,带>>的代码为交互式命令行,其他为脚本

目录

前言:运行python

正文

1.注释

2.代码块

3.多行语句

4.数据类型

4.1字符串

     4.1.1.字符串格式化

     4.1.2.f-string

     4.1.3. str.format()函数

4.2列表

4.3元组

4.4集合

4.5字典

5.数据类型转换

6.python推导式

7.运算符

7.1算术运算符

7.2比较运算符​编辑

7.3赋值运算符

7.4位运算符

7.5逻辑运算符

7.6成员运算符

7.7身份运算符


前言:运行python

1、交互式命令行:

你可以通过命令行窗口进入 Python 并开始在交互式解释器中开始编写 Python 代码。

你可以在 Unix、DOS 或任何其他提供了命令行或者 shell 的系统进行 Python 编码工作。

$ python             # Unix/Linux

或者  

C:>python           # Windows/DOS

交互式解释器可以充当计算器:输入2+3.3,按下回车,命令行给出结果5.3 

>>> 2+3.3
5.3

2.命令行中运行脚本

如何在命令行里运行python脚本 - 科学猫经验

3.IDE:pycharm

正文

1.注释

#单行注释
'''
多行注释1
'''

"""
多行注释2
"""

2.代码块

python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {} 。

缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。

if True:
    print ("Answer")
    print ("True")
else:
    print ("Answer")
  print ("False")    # 缩进不一致,会导致运行错误

3.多行语句

如果语句很长,我们可以使用反斜杠 \ 来实现多行语句
#total = item_one +item_two +item_three
total = item_one + \
        item_two + \
        item_three

4.数据类型

数值、字符串、元组是不可变类型(immutable),集合、列表、字典是可变(mutable)类型。

可变类型的变量,可以修改变量元素,也可以重新对整个变量赋值;

而不可变类型的变量,只能对整个变量重新赋值,以达到修改变量的目的。

  • 不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变 a 的值,相当于新生成了 a。

  • 可变类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。

1.pycharm上运行时,Python出于对性能的考虑,但凡是不可变对象,在同一个代码块中的对象,只要是值相同的对象,就不会重复创建,而是直接引用已经存在的对象。

2.但若使用b=a这一赋值语句,不论是什么变量,ab都指向同一内存。

关于python中b=a与b=a[:]的区别_XD_whYe的博客-CSDN博客

Python 中的变量不需要声明。每个变量在使用前都必须赋值.若不给变量赋值,则会出错。

在 python 中,类型属于对象,对象有不同类型的区分,变量是没有类型的:

a=[1,2,3]

a="Runoob"

以上代码中,[1,2,3] 是 List 类型,"Runoob" 是 String 类型,而变量 a 是没有类型,它仅仅是一个对象的引用(一个指针),可以是指向 List 类型对象,也可以是指向 String 类型对象。

数据类型

number

数字

1.int :0101,62,0x80,232232446 

2.float:3.15,4.2E-10

3.complex(复数):2i+3

bool

布尔类型

数值只有True,False两种。

若bool型参与数字运算,True对应数字1,False对应数字0。

True==1,False==0

>>> x = 1
>>> y = True
>>> x==y
True
>>> x is y
False

string

字符串

a:python中'  '和"  "等价。

b:使用三引号(''' 或 """)可以指定一个多行字符串。

c:转义符 \。使用 r 可以让反斜杠不发生转义,如r"this is a line with \n" 则 \n 会显示,并不是换行。

d:字符串可以用 + 运算符连接在一起,用 * 运算符重复。

e:Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。

f:Python 中的字符串不能改变。

g:Python 没有单独的字符类型,一个字符就是长度为 1 的字符串。

h:字符串的截取的语法格式如下:变量[头下标i:尾下标j:步长]

截取的字符串包含i,不包含j(见实例1)

list

列表

[值]

见4.1

tuple

元组

(值)

见4.2

set

集合

{值}

见4.3

可以进行差并交集运算

dictionary

字典

{键值对}

见4.4

创建空变量

空列表

tinylist = list()

tinylist2 = []

空元组tinytuple=()
空集合tinyset=set()
空字典

tinydict={}

tinydict2=dict()

del语句可以删除某个元素或某个对象,这对于任何数据类型都是通用的

>>> a= list("21553")
>>> a
['2', '1', '5', '5', '3']
>>> del a[1]
>>> a
['2', '5', '5', '3']
>>> del a
>>> a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

4.1字符串

4.1.1.字符串格式化

在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。

print("25的八进制形式为%o"%25)

#输出结果
25的八进制形式为31

字符串格式化符号

操作符辅助指令

 4.1.2.f-string

在python3.6后添加了一种格式化字符串的方式:f-string 格式。

f-string 格式化字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将①变量或②表达式计算后的值替换进去

#①
a = "123"
print(f"{a}456")
#输出结果
123456

#②
print(f"2的3次方为{2**3}")
#输出结果
2的3次方为8

4.1.3. str.format()函数

区别于前两种的方式。format 函数可以接受不限个参数,位置可以不按顺序。

#基础格式
print("{},{}".format("你好","世界"))
#指定位置
print("{1},{0}".format("你好","世界"))
#设置参数
print("{hello},{world}".format(hello="你好",world="世界"))

#通过列表索引设置参数
initstr = ["你好","世界"]
print("{0[0]},{0[1]}".format(initstr))#0不可省略
#通过字典设置参数
dict = {"hello":"你好","world":"世界"}
print("{hello},{world}".format(**dict))#**表示字典

#传入对象
class AssignValue(object):
    def __init__(self, value):
        self.value = value
my_value = AssignValue(6)
print('value 为: {0.value}'.format(my_value))  # "0" 是可选的

 输出结果

你好,世界

世界,你好

你好,世界

你好,世界

你好,世界

value 为: 6

使用大括号转义大括号

print("{},{{0}}".format("1"))
#输出结果
1,{0}

str.format()格式化数字的方法

 



 注意:(字符串)

#"""   """独立出现表示多行注释

"""  
这是
多行注释
"""

#"""   """用作变量表示多行字符串
paragraph = """这是一个段落,
可以由多行组成"""
para_str = """这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( \t )。
也可以使用换行符 [ \n ]。
"""
print (para_str)


#以上实例执行结果为:
'''
这是一个多行字符串的实例
多行字符串可以使用制表符
TAB (    )。
也可以使用换行符 [ 
 ]。
'''

实例1:字符串的多种输出方式

str='123456789'
 
print(str)                 # 输出字符串
print(str[0:-1])           # 输出第一个到倒数第二个的所有字符
print(str[0])              # 输出字符串第一个字符
print(str[2:5])            # 输出从第三个开始到第五个的字符
print(str[2:])             # 输出从第三个开始后的所有字符
print(str[1:5:2])          # 输出从第二个开始到第五个且每隔一个的字符(步长为2)
print(str * 2)             # 输出字符串两次
print(str + '你好')         # 连接字符串


#实例输出结果
"""
123456789
12345678
1
345
3456789
24
123456789123456789
123456789你好
"""

实例2:用命令行得到字符串包含的字符个数

import sys; x = 'runoob'
sys.stdout.write(x)


#执行结果
"""
runoob
6
"""
#6为字符串中字符个数

4.2列表

1.列表是写在方括号 [] 之间、用逗号分隔开的元素列表。

list = [ 'abcd', 786 , 2.23, 'runoob', 70.2 ]
tinylist = [123, 'runoob']

2.列表截取的语法格式如下:

变量[头下标i:尾下标j:步长]   #索引值以 0 为开始值,-1 为从末尾的开始位置。

                                         #同字符串一样,截取所得元素包含i不包含j

3.列表可以用 + 运算符连接在一起,用 * 运算符重复。

list = [ 'abcd', 786 , 2.23, 'runoob', 70.2 ]
tinylist = [123, 'runoob']

print (tinylist * 2)    # 输出两次列表
print (list + tinylist) # 连接列表

#运行结果
'''
[123, 'runoob', 123, 'runoob']
['abcd', 786, 2.23, 'runoob', 70.2, 123, 'runoob']
'''

4.与Python字符串不一样的是,列表中的元素是可以改变的。

5.列表的一些方法

使用append方法和pop方法,列表可以当作栈使用

>>> stack = []

>>> stack.append(1)    #入栈
>>> stack.append(2)    #入栈
>>> stack
[1, 2]

>>> stack.pop()            #出栈
2
>>> stack
[1]

同样地, 使用append方法和pop(0)方法,列表可以当作队列使用.但pop(0)速度并不快,因为所有元素都要移动。

6.矩阵

使用列表构造矩阵,并通过推导式将矩阵转置

>>> matrix = [[0,0,0,0],
...                  [1,1,1,1],
...                  [2,2,2,2]]
>>> matrix = [[row[i] for row in matrix]for i in range(3)]

>>> matrix
[[0, 1, 2], [0, 1, 2], [0, 1, 2]]

4.3元组

元组与列表基本类似,不同之处主要有2个。

1.元组写在小括号 () 里,元素之间用逗号隔开。

输入元组时,可以不写小括号

tuple = 1,2,3,4

但输出时,元组是带小括号的

>>> tuple
(1, 2, 3, 4)

2.元组同字符串一样,元素不可改变。

tuple = ( 'abcd', 786 , 2.23, 'runoob', 70.2  )
tinytuple = (123, 'runoob')

1.创建空元组

tup1 = ()

 2.元组中只包含一个元素时,需要在元素后面添加逗号 , ,否则括号会被当作运算符使用:

>>> tup1 = (50)
>>> type(tup1)     # 不加逗号,类型为整型
<class 'int'>

>>> tup1 = (50,)
>>> type(tup1)     # 加上逗号,类型为元组
<class 'tuple'>

 3.元组是不可变的。

即元组中的元素值是不允许修改的,但可以重新对变量赋值

# 以下修改元组元素操作是非法的。
 tup1[0] = 100
#以下操作可行
tup = ('r', 'u', 'n', 'o', 'o', 'b')
tup = (1,2,3)

4.元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组

tup = ('Google', 'Runoob', 1997, 2000)
del tup

5.与列表一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。

6.元组和列表一样具有索引,可以进行截取

 >>> tup = ('Google', 'Runoob', 'Taobao', 'Wiki', 'Weibo','Weixin')
>>> tup[1]
'Runoob'
>>> tup[-2]
'Weibo'
>>> tup[1:]
('Runoob', 'Taobao', 'Wiki', 'Weibo', 'Weixin')
>>> tup[1:4]
('Runoob', 'Taobao', 'Wiki')

4.4集合

集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。

基本功能是进行成员关系测试和删除重复元素。

#两种创建集合的方法
#方法一
sites = {'Google', 'Taobao', 'Runoob', 'Facebook', 'Zhihu', 'Baidu'}
#方法二
a = set('abracadabra')

#更多实例
sites = {'Google', 'Taobao', 'Runoob', 'Facebook', 'Zhihu', 'Baidu'}

print(sites)   # 输出集合,重复的元素被自动去掉

# 成员测试
if 'Runoob' in sites :
    print('Runoob 在集合中')
else :
    print('Runoob 不在集合中')


# 可以进行集合运算
a = set('abracadabra')
b = set('alacazam')

print(a)

print(a - b)     # a 和 b 的差集

print(a | b)     # a 和 b 的并集

print(a & b)     # a 和 b 的交集

print(a ^ b)     # a 和 b 中不同时存在的元素


#以上实例输出结果:

'''
{'Zhihu', 'Baidu', 'Taobao', 'Runoob', 'Google', 'Facebook'}
Runoob 在集合中
{'b', 'c', 'a', 'r', 'd'}
{'r', 'b', 'd'}
{'b', 'c', 'a', 'z', 'm', 'r', 'l', 'd'}
{'c', 'a'}
{'z', 'b', 'm', 'r', 'l', 'd'}
'''

 

注意:set函数创建空集合,{}创建空字典。set函数只能有一个参数

set1 = set() #空集合

dict={}  #空字典

person2 = set(("hello","jerry",133,11,133,"jerru")) #只能传入一个参数,可以是list,tuple等 类型

>>> list = set("dsdadsada")
>>> list
{'s', 'a', 'd'}

1.添加元素  s为一个集合

s.add( x )
s.update( x )

2.移除元素

s.remove( x )
s.discard( x )
s.pop() #随机删除一个元素
s.clear()#清空集合

3.计算集合元素个数

len(s)

4.5字典

列表是有序的对象集合,字典是无序的对象集合。

两者之间的区别在于:字典当中的元素是通过键来存取的,列表通过偏移存取。

调用字典元素:dictionary[键名]

调用列表元素:list[下标]

字典;是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。

1.创建字典

#两种创建字典的方法
#方法一
tinydict = {'name': 'bob', 0: 'false'}
#方法二
tinydict = dict(a='a', b='b', t='t')
tinydict2 = dict([('sape', 4139), ('guido', 4127), ('jack', 4098)]) #dict()参数为键值对元组列表

2.字典赋值


#两种字典赋值方法
#方法1
dict = {}
dict['one'] = "1 - 菜鸟教程"
dict[2]     = "2 - 菜鸟工具"

#方法2
tinydict = {'name': 'runoob','code':1, 'site': 'www.runoob.com'}

3.删除字典

del tinydict['Name'] # 删除键 'Name'
tinydict.clear()     # 清空字典
del tinydict         # 删除字典

4. 如果同一个键出现两次,则它的值是最后一次赋的值

tinydict = {'Name': 'Runoob', 'Age': 7, 'Name': '小菜鸟'}
 
print ("tinydict['Name']: ", tinydict['Name'])
#

以上实例输出结果:

tinydict['Name']:  小菜鸟

5.遍历字典

 >>> tel = {'jack': 4098, 'sape': 4139}
>>> for x in tel :
...  x
...
'jack'
'sape' 

直接使用for循环遍历字典只会显示键,使用 items() 方法同时遍历键和值

>>> for x,y in tel.items():
...  x,y
...
('jack', 4098)
('sape', 4139) 

附加:遍历列表的技巧

在列表中遍历时,索引位置和对应值可以使用 enumerate() 函数同时得到:

>>> for i, v in enumerate(['tic', 'tac', 'toe']):
...     print(i, v)
...
0 tic
1 tac
2 toe

 同时遍历两个或更多的列表,可以使用 zip() 组合:

>>> questions = ['name', 'quest', 'favorite color']
>>> answers = ['lancelot', 'the holy grail', 'blue']
>>> for q, a in zip(questions, answers):
...     print('What is your {0}?  It is {1}.'.format(q, a))
...
What is your name?  It is lancelot.
What is your quest?  It is the holy grail.
What is your favorite color?  It is blue.

要反向遍历一个序列,首先指定这个序列,然后调用 reversed() 函数:

>>> for i in reversed(range(1, 10, 2)):
...     print(i)
...
9
7
5
3

要按顺序遍历一个序列,使用 sorted() 函数返回一个已排序的序列,并不修改原值:

>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
>>> for f in sorted(set(basket)):
...     print(f)
...
apple
banana
orange
pear 

6.更多实例 


print (dict['one'])       # 输出键为 'one' 的值
print (dict[2])           # 输出键为 2 的值
print (tinydict)          # 输出完整的字典
print (tinydict.keys())   # 输出所有键
print (tinydict.values()) # 输出所有值

#输出结果
'''
1 - 菜鸟教程
2 - 菜鸟工具
{'name': 'runoob', 'code': 1, 'site': 'www.runoob.com'}
dict_keys(['name', 'code', 'site'])
dict_values(['runoob', 1, 'www.runoob.com'])
'''

键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行 

5.数据类型转换

Python 数据类型转换可以分为两种:

  • 隐式类型转换 - 自动完成
  • 显式类型转换 - 需要使用类型函数来转换

 ·int()中base为进制,使用base时,x不能是数字

 int('12',16) # 如果是带参数base的话,12要以字符串的形式进行输入,且必须是整数
               #12 为 18的16进制形式

6.python推导式

Python 支持各种数据结构的推导式:

  • 列表(list)推导式
  • 字典(dict)推导式
  • 集合(set)推导式
  • 元组(tuple)推导式
[表达式 for 变量 in 列表] 
[out_exp_res for out_exp in input_list]

或者 

[表达式 for 变量 in 列表 if 条件]
[out_exp_res for out_exp in input_list if condition]
  • out_exp_res:列表生成元素表达式,可以是有返回值的函数。
  • for out_exp in input_list:迭代 input_list 将 out_exp 传入到 out_exp_res 表达式中。
  • if condition:条件语句,可以过滤列表中不符合条件的值。

7.运算符

7.1算术运算符

 7.2比较运算符

 7.3赋值运算符

不同变量同时赋值

a,b,c = 1,2,"xx"

a=1;b=2;c="xx"  #用;分割一行的多个语句

 7.4位运算符

a=60,b=13

 7.5逻辑运算符

7.6成员运算符

7.7身份运算符

is 与 == 区别:

is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。

>>>a = [1, 2, 3]

>>> b = a

>>> b is a

True

>>> b == a

True

>>> b = a[:]

>>> b is a

False

>>> b == a

True

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值