Python小白的自学笔记 - 基本语法及数据类型

Python笔记

Python小白一枚,不定期对已学习的Python知识作下笔记和整合。文中如有错误的地方,还请各位CSDN大拿评论区指出,多谢指教!

@[toc]

1.注释

Python注释有单行注释和多行注释两种:
1.1 单行注释以 “#” 开头

 #这句话是单行注释
 #以井号开头,书写单行注释文本
print('我的第一句python代码!') #使用print输出一段文字

1.2 Python中多行注释使用三个单引号 ''' 或三个双引号 """。

'''
这里,我们可以用三个单引号进行多行注释
'''
"""
同时,也可以使用三个双引号进行多行注释
"""

2.语法格式缩进

Python中的语法格式缩进可以用来约束用户的代码书写格式化的,同时也体现了Python代码和其他语言书写上的一个区别:Python中的代码块不是使用大括号 {} 来控制循环、类、函数以及其他逻辑判断的,而是通过语句以 ':'(英文冒号) 结尾时,将缩进的语句视为一个代码块。
正确的来说,4个空格作为一个缩进(首选缩进方法)。
同时,为了代码编写上的方便,我们也可以使用一个 tab键作替代。
需要注意的是: tab 制表符只能用于与同样使用制表符缩进的代码保持一致。 Python3不允许同时使用空格和制表符进行缩进。
当我们使用pycharm等软件编写Python代码时,遇到需要撤回缩进的情景时,我们可以使用 shift + tab 进行撤回缩进。

# 判断变量a的值是否大于等于50:
a = 99
if a >= 50 : #注意这一行中以‘:’结尾,下方缩进的语句试做一个代码块
    print(‘a大于等于50’)
else:
    print(‘a小于50’)

3.标识符

  • 标识符的第一个字符必须是英文字母或下划线 _。
  • 标识符的其他的部分由字母、数字和下划线组成。
  • 标识符区分大小写。
  • 标识符和编码要遵循PEP 8规范,详细可见Python官网:https://www.python.org/dev/peps/pep-0008/

4.关键字

Python中的关键字不能被用作任何的标识符名称,否则会提示报错信息。
我们可以在安装Python3.X版本软件自带的IDLE工具中,输入下面两句语句即可输出所有Python关键字:

>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

5.输入与输出

5.1 Python输入 -- input(),会把用户通过键盘输入的任何值都作为字符串来存储作为变量:

# 用户按下enter建后退出输入模式
input("\n\n按下 enter 键后退出。")

5.2 Python输出 -- print(),在括号内的单引号中添加字符串,就可以向屏幕输出指定文字。print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end="":

# 用户输入文本,并按下enter建后退出输入模式
input("\n\n按下 enter 键后退出。")

6.多行语句

通常,我们在编写代码时,习惯将完整的一句代码写在同一行上的,但是个别时候,一句代码很长的情况下,在后续的阅览过程中会很不方便,需要拖动下方滚动条才能看到隐藏的代码,此时,我们可以使用反斜杠( \ )来实现多行语句。

sum = number1 + number2 + \
      number3 + \
      number4

7.变量

  • 变量是程序中运算的对象
  • 变量需要程序员自己定义
  • 定义后要给变量初始化
  • 变量的值可以被改变
  • 变量是占用内存空间的
  • Python可以同时为多个变量赋值,如a, b = 1, 2
#计算number1 + number2的和
number1=input('请输入number1的值:')
number2=input('请输入number2的值:')
sum=int(number1)+int(number2)
print('number1 + number2 = ',sum)
  • 运行结果如下:
请输入number1的值:100
请输入number2的值:200
number1 + number2 = 300

8.数据类型

Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。
等号 = 用来给变量赋值。
等号 = 运算符左边是一个变量名,等号 = 运算符右边是存储在变量中的值。

8.1 Number(数值类型)

8.1.1 数值类型介绍

Python中的数字类型常用: int 、float 、bool、complex。

  • int 类型是唯一一种整数类型。
  • float 类型是单精度浮点数类型,Python中没有double双精度浮点数类型。
  • bool 布尔类型,只有 true 和 false 两种值。
  • complex复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。
  • 内置的type()函数可以查询变量所指的对象类型。
  • 可以使用内置的isinstance()函数来判断一个对象是否是一个已知的类型。
  • 如果要判断两个类型是否相同推荐使用 isinstance()。
#创建变量a,赋值为100
>>> a = 100
>>> a
100
>>> type(a)    #使用type()函数来判断变量的类型
<class 'int'>
'''创建变量b,赋值为1.23456'''
>>> b = 1.23456
>>> print(b)
1.23456
>>> type(b)
<class 'float'>
#使用isinstance() 函数来判断一个对象是否是一个已知的类型
>>>isinstance(b,float)
True
"""
创建变量d,赋值为False,
python中布尔类型赋值时首字母大写
"""
>>> d = False
>>> print(d)
False
>>> type(d)
<class 'bool'>

Python中,需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。

  • int(x) 将x转换为一个整数。
  • float(x) 将x转换到一个浮点数。
  • complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。
  • complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。
#首先让用户输入num1 和 num2 两个变量的数值
num1 = input('请输入变量 num1 的值:')
num2 = input('请输入变量 num2 的值:')

sum = num1 + num2
print('先来看看没有进行强制类型转换的num1 + num2 的和:')
print('num1 + num2 = ',sum)

sum = int(num1) + int(num2)
print('如果对输入的两个字符作类型转换为int 类型,sum的值如下:')
print('num1 + num2 = ',sum)

我们来看看上面的代码的输出结果:

请输入变量 num1 的值:12
请输入变量 num2 的值:34
先来看看没有进行强制类型转换的num1 + num2 的和:
num1 + num2 =  1234
如果对输入的两个字符作类型转换为int 类型,sum的值如下:
num1 + num2 =  46

8.1.2 运算符
运算符 描述
+ 加法,两个对象相加 a + b
- 减法,两个对象相减
* 乘法,两个数相乘或是返回一个被重复若干次的字符串
/ 除法, x 除以 y
% 取模,返回除法的余数
** 幂 - 返回x的y次幂
// 取整除 - 向下取接近除数的整数
== 等于
!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
= 简单的赋值运算符,c = a + b 将 a + b 的运算结果赋值为 c
+= 加法赋值运算符,c += a 等效于 c = c + a
-= 减法赋值运算符,c -= a 等效于 c = c - a
*= 乘法赋值运算符,c *= a 等效于 c = c * a
/= 除法赋值运算符,c /= a 等效于 c = c / a
%= 取模赋值运算符 ,c %= a 等效于 c = c % a
**= 幂赋值运算符 ,c **= a 等效于 c = c ** a
//= 取整除赋值运算符,c //= a 等效于 c = c // a

8.2 String(字符串)

==Python中的字符串用单引号 ' 或双引号 " 或者三引号 ''' 括起来,同时使用反斜杠 \ 转义特殊字符。==

#使用单引号(') 
str1 = 'this is string' 
#使用双引号(") 
str2 = "this is string"
#使用三引号(''') 
str3 = '''this is string'''

字符串的切片截取语法格式如下:

  • 变量[起始下标:结束下标]
  • 索引值以 0 为开始值,-1 为从末尾的开始位置。

加号 + 是字符串的连接符, 星号 * 表示复制当前字符串,紧跟的数字为复制的次数。

str = '这是一串很长很长的字符串!'
print(str)  # 输出字符串
print(str[0:-1])  # 输出第一个到倒数第二个的所有字符
print(str[0])  # 输出字符串第一个字符
print(str[4:8])  # 输出从第三个开始到第五个的字符
print(str[4:])  # 输出从第三个开始的后的所有字符
print(str * 3)  # 输出字符串两次
print(str + "没有比我更长的字符串了")  # 连接字符串

输出的结果:

这是一串很长很长的字符串!
这是一串很长很长的字符串
这
很长很长
很长很长的字符串!
这是一串很长很长的字符串!这是一串很长很长的字符串!这是一串很长很长的字符串!
这是一串很长很长的字符串!没有比我更长的字符串了

另外,Python 使用反斜杠()转义特殊字符,也可以使用 r 来让反斜杠不发生转义。

print('shopping')
print('shoppi\ng')
print(r'shoppi\ng')

上述代码输出结果如下:

shopping
shoppi
g
shoppi\ng

最后,总得列一下常用字符串操作函数:

函数名 语法&参数 描述
len() len(str) 返回字符串 str 的长度
replace() str.replace(old, new, max) 把字符串中的 old 替换成 new,如果指定第三个参数max,则替换不超过 max 次
find() str.find(str, beg=0, end=len(string)) 检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1
index() str.index(str, beg=0, end=len(string)) 检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,该方法与 python find()方法一样,只不过如果str不在 string中会报一个异常
split() str.split(str="", num=string.count(str)) 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串
count() str.count(sub, start= 0,end=len(string)) 用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置
capitalize() str.capitalize() 将字符串的第一个字母变成大写,其他字母变小写。

8.3 List(列表)

List(列表)是一种有序集合,可以随时添加和删除其中的元素:

  • 列表的元素可以不同,也可以被改变;
  • 列表同样支持切片截取语法如下:
    变量[起始下标:结束下标:步进],列表被截取后,返回的是一个包含所需元素的新列表;
  • 列表格式[“JRS”,“James”,“Jackson”],[]之间,元素用逗号隔开;
  • 索引值从0开始,-1代表末尾;
  • 使用(+)可以连接两个列表,(*)是重复操作。
list1 = ['ABC', 1314, 3.1415926, '中国', 'True']
list2 = [123, 'GoHome']

print(list1)  # 输出完整列表1
print(list1[0])  # 输出列表1第一个元素
print(list1[1:4])  # 从列表1第二个开始输出到第三个元素
print(list1[3:])  # 输出列表1的从第三个元素开始的所有元素
print(list2 * 2)  # 输出两次列表2
print('----------------------------')
print(list2 * 2 ** 2) # 输出 2 的 2 次幂的次数的列表2
print(list1 + list2)  # 连接列表1和列表2

上述代码的输出结果如下:

['ABC', 1314, 3.1415926, '中国', 'True']
ABC
[1314, 3.1415926, '中国']
['中国', 'True']
[123, 'GoHome', 123, 'GoHome']
----------------------------
[123, 'GoHome', 123, 'GoHome', 123, 'GoHome', 123, 'GoHome']
['ABC', 1314, 3.1415926, '中国', 'True', 123, 'GoHome']

8.4 Tuple(元组)

Tuple(元组)与列表类似,不同之处在于元组的元素不能修改,元组写在小括号()里,元素之间用逗号隔开,另外:

  • 元组中元素类型也可以不同;
  • 列表同样支持切片;
  • 索引值从0开始,-1代表末尾;
  • 如果元组中的元素只有一个,那么写成(1,),不要写成(1),要在唯一的一个元素后面加上英文的逗号;
  • 虽然元组的元素不可改变,但它可以包含可变的对象,比如list列表。
# 元组tuple中,可以将List列表作为元素
tuple = ('IG', 8848, 25.121212, '4008823823', [123, 'GoHome'])
tinytuple = (1109, '期', '星光大道')

print(tuple)  # 输出完整元组
print(tuple[0])  # 输出元组的第一个元素
print(tuple[1:3])  # 输出从第二个元素开始到第三个元素
print(tuple[2:])  # 输出从第三个元素开始的所有元素
print(tinytuple * 2)  # 输出两次元组
print(tuple + tinytuple)  # 连接元组

上述代码的输出结果如下:

('IG', 8848, 25.121212, '4008823823', [123, 'GoHome'])
IG
(8848, 25.121212)
(25.121212, '4008823823', [123, 'GoHome'])
(1109, '期', '星光大道', 1109, '期', '星光大道')
('IG', 8848, 25.121212, '4008823823', [123, 'GoHome'], 1109, '期', '星光大道')

下面我们来验证下元组的元素类型是否真的可以不同,元组中的元素是否真的不可改,我们用到IDLE工具进行对应代码的编写:


元组中的元素是不可改的

可以看到,元组中可以同时存在整型和字符串型数据类型的元素,而当我试图给元组的下标为3 的元素赋值的时候,提示了报错信息:
TypeError: 'tuple' object does not support item assignment
即:tuple”对象不支持项分配

注意:如果元组中的元素包含List列表,那么代码中一样不可以直接赋值操作去修改原有的元素List,但是,却可以对List列表中的元素进行修改,如下:


元组中List中的元素可改

元组中,不可以直接将tup[3]的值赋值为100,但是却可以将tup[3][1]中的值赋值为365。


8.5 Set(集合)

Set(集合),是一个无序不重复元素的序列

  • 可以使用大括号 { } 或者set()函数创建集合
    注意:创建一个空集合必须用set()而不是 { },因为
    { } 是用来创建一个空字典
  • 创建格式:
    {value1, value2, value3, value4,….}
    或者
    set(value)
  • 输出集合的时候,重复的元素会被自动去除
  • 集合之间可以进行:-差集 &交集 |并集 ^反交集
student = {'xiaohong', 'xiaoming', 'xiaoqing', 'xiaowen', 'xiaohong', 'xiaoding'}
print(student)  # 输出集合,重复的元素被自动去掉
if 'xiaozhi' in student:
    print('xiaozhi 在集合中')
else:
    print('xiaozhi 不在集合中')

上述代码的输出结果如下(可以看到重复的 'xiaohong' 只输出了一次,并且元素输出是无序的):

{'xiaoding', 'xiaohong', 'xiaoming', 'xiaowen', 'xiaoqing'}
xiaozhi 不在集合中

8.6 Dictionary(字典)

字典(dictionary)是无序集合对象,元素是通过key-value键值对来存取的

  • 字典是一种映射类型,字典用"{ }"标识,它是一个无序的键(key) : 值(value)对集合
  • 键(key)必须使用不可变类型、在同一个字典中,键(key)必须是唯一的
  • 另外,字典类型也有一些内置的函数,例如clear()、keys()、values()等。
  • 字典方便我们使用查找和搜索功能
  • 注意: 创建空字典使用 { }
dict = {}
dict['one'] = "1 - NBA"
dict[2] = "2 - NCAA"
tinydict = {'name': 'NCAA', 'code': 2, 'country': 'USA'}

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

上述代码的输出结果如下:

1 - NBA
2 - NCAA
{'name': 'NCAA', 'code': 2, 'country': 'USA'}
dict_keys(['name', 'code', 'country'])
dict_values(['NCAA', 2, 'USA'])


笔已至此,本篇笔记也已经告一段落,十分感谢各位观看至此,如果笔记中由任何错误或者表述不清的地方也请大家在下方指出,多谢。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念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

推荐阅读更多精彩内容

  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,719评论 0 10
  • Python 是一种相当高级的语言,通过 Python 解释器把符合语法的程序代码转换成 CPU 能够执行的机器码...
    Python程序媛阅读 1,889评论 0 3
  • 行走江湖,希望遇到的都是一个个成熟而温暖的人,其实一路走来,就会发现,这是一个善意与恶意并存的世界,活得如鱼得水...
    小绿super绿阅读 340评论 2 2
  • 今天上机器人课,我到教室的时候看你在电脑那里还在往控制器中传输数据。就随口问道:“今天怎么回事?到现在还没有做好?...
    乔预阅读 387评论 0 1
  • 原来是一片繁茂的区域 有花 有树 那些不知名的 还野蛮生长的 这个地方的太阳很好 冬雪春暖 各季的景色满满当当 前...
    鹿宥宥阅读 241评论 0 7