pythonav.com
首页
知识库
免费视频
项目实战
每天20道面试题
登录
注册
上一节大家已把Python开发相关的环境搭建完毕,那么接下来我们就来开始学习Python的更多语法,以便能够写出更多有意义的代码。 ## 1. 编码 在正式开始学习Python语法之前,我们需要先来学习一下有关计算机编码的知识点,即:
**计算机中所有的数据本质上都是以0和1的组合来存储**
。 例如:你用window的文本编辑器写了一篇文章,并保存在自己电脑的【D:\论文.txt】中.  本质上在电脑的D盘存储的文件的内容是一大堆的0和1的组合:0101010101101000011... 那么
**问题**
来了:我们写的文字是怎么变成0和1的组合的呢? ``` 一般在文件保存时会让你选择以某种编码保存。 而编码类似于一个密码本,为文字和0/1创建对应关系,例如: 武 -> 01111111 00011010 010110110 沛 -> 01001111 10010000 001110100 齐 -> 11111111 00000000 010101010 所以在文件保存时候会根据编码的对应关系找到其对应的0/1写入到硬盘文件中。 ``` ``` 计算机中有很多中编码方式,例如:gbk和utf-8,编码之间有什么区别呢? 每种编码都有自己的一套密码本,都维护这自己的一套规则,如: utf-8编码: 武 -> 01111111 00011010 010110110 沛 -> 01001111 10010000 001110100 齐 -> 11111111 00000000 010101010 gbk编码: 武 -> 11111111 00000010 沛 -> 01001111 01111111 齐 -> 00110011 10101010 所以,使用的不同的编码保存文件时,硬盘的文件中存储的0/1也是不同的。 ```
**注意:**
保存文件使用某种编码,打开文件时就必须使用此编码,否则就会出现乱码。 哈哈哈哈,通过这个知识点是不是就了解了自己之前打开文件时候乱码的原因了。 ## 2. 初体验 在Pycharm中创建一个任意python文件(一般Python文件都是以 .py 后缀),并写入以下代码并运行。  我们把这个过程分为两步: 【第一步】创建py文件 & 写代码。 【第二步】保存代码文件,注意右下角黄色字体显示,此py文件是以utf-8编码保存(默认)。 【第三步】解释器运行代码文件,由于py文件是以utf-8编码保存,所以在Python解释器运行文件时也需要使用utf-8编码去打开并运行。代码文件顶部`# -*- coding:utf-8 -*- `的作用就是告诉Python解释器用utf-8编码去打开并运行此py代码文件。 如果代码文件是以gbk编码保存,那么文件的头部应该写成 `# -*- coding:gbk -*-`,这样解释器就会以gbk编码去打开并运行代码文件。 ## 3. 输出 输出,目的将代码中结果或提示呈现给用户,让用户可以看到。 格式:`print("要输出的内容")` - 默认输出要占一行,因为print的结束时默认会加换行符 `end="\n"` ``` # -*- coding: utf-8 -*- print("开始") print("看这风景美如画,") print("本想吟诗赠天下,") print("怎奈自己没文化,") print("只能卧槽浪好大。") print("结束") # 输出结果: 开始 看这风景美如画, 本想吟诗赠天下, 怎奈自己没文化, 只能卧槽浪好大。 ``` - 不换行,加入`end=""`表示print结束时不再加`\n`而换成空。 ``` # -*- coding: utf-8 -*- print("开始") print("看这风景美如画,",end="") print("本想吟诗赠天下,",end="") print("怎奈自己没文化,",end="") print("只能卧槽浪好大。") print("结束") # 输出结果: 开始 看这风景美如画,本想吟诗赠天下,怎奈自己没文化,只能卧槽浪好大。 结束 ``` **练习题** 1. 使用print输出自己的姓名 2. 使用print输出 春眠不觉晓, 出处闻啼鸟, 夜来风雨声, 花落知多少。 3. 是用print输出 春眠不觉晓,出处闻啼鸟,夜来风雨声,花落知多少。 ## 4. 数据类型:str/int/bool 刚上学时,老师教我们 数字 、拼音、汉字、真假判断 等,然后我们根据学到的内容写作文,老师来检查并打分。 现在学编程,我教大家 int、str、bool 等,然后大家根据这些内容来写代码,写完代码交给Python解释器去运行。 ### 4.1 int(整型) 整型,其实就是以前数学课上讲的整数(不包含小数),在写代码时用于表示整数相关的东西,例如:年龄、存款、尺寸、手机号等。 一般我们提到的:5、18、22、99、... 等整数 在Python中都称为是整型,且支持 加/减/乘/除/取余/指数 等操作。 ```python # 创建整型 666,并使用并使用print输出 print(666) # 计算 2 加 10 的结果,并使用print输出 print(2+10) # 计算 2 乘以 10 的结果,并使用print输出 print(2*10) # 计算 10 除以 2 的结果,并使用print输出 print(10/2) # 计算 10 除以 3 得的余数,并使用print输出 print(10%2) # 计算 2 的 4 次方,并使用print输出 print(2**4) ``` *注意:print在此处只起到输出结果的作用,与加减乘数无关。 `#` 是单行注释,# 后面的内容不会被解释器当做代码处理,个人可以用他做解释说明,方便理解。* ### 4.2 str(字符串) 字符串,其实就是我们生活中的文本信息。例如:姓名、地址、自我介绍等。 字符串有一个特点,他必须由引号引起来,如: ```python # 创建字符串"武沛齐",并使用print输出 print("武沛齐") # 创建字符串 "中国北京昌平区",并使用print输出 print("中国北京昌平区") # 创建字符串 "我是谁?我是永远都得不到的爸爸呀!",并使用print输出 print("我是谁?我是永远都得不到的爸爸呀!") ``` *注意:print在此处只起到输出结果的作用。* 在整型中支持整型之间的加减乘除,在字符串中则支持字符串的 加、乘。 - 字符串拼接(相加)格式: "字符串A" + "字符串B" ,要求字符串只能和字符拼接。 - 字符串相乘格式: 整型 * "字符串",效果就是让此字符串重新出现多少次,要求必须是整型和字符串相乘。 ```python # 两个字符串 "金角" + "你是大王吧" 相加(一般称字符串相加为字符串拼接),并使用print输出 # 代码内部会先做字符串拼接,再调用print输出凭借后结果 print( "金角"+"你是大王吧" ) # 整型和字符串拼接(错误,不支持) print( 5+"乔碧萝" ) # 整型和字符串相乘,得到字符串 "小逼崽子小逼崽子小逼崽子" print( 3*"小逼崽子" ) ``` ### 4.3 bool(布尔值) 布尔值,其实就是我们生活通过某种判断得到的真、假。例如: 1大于2是假 、 66等于99是假、字符串"二货"等于字符串"李杰"是假、1小于7是真、字符串"admin"等于字符串"admin"是真、字符串"666"等于整型666是假。 布尔值中只有两个值:True(真)/False(假)。 ```python # 判断 1大于2 是True/False?并使用print输出 print( 1>2 ) # 判断 66等于99 是True/False?并使用print输出 print( 66==99 ) # 判断 字符串"二货"等于字符串"李杰" 是True/False?并使用print输出 print( "二货"=="李杰" ) # 判断 1小于7是True/False?并使用print输出 print( 1<7 ) # 判断 字符串admin等于字符串admin是True/False?并使用print输出 print( "admin"=="admin") # 判断 字符串666 等于整型 666 是True/False?并使用print输出 print( "666"==666 ) ``` ### 4.4 类型转换 上文数据类型int/str/bool有了初步了解,他们都有自己不同的定义方式。 - 整型定义时,必须是数字且无引号,例如:5、8、9 - 字符串定义时,必须用双引号括起来,例如:"中国"、"武沛齐"、"666" - 布尔值定义时,只能写True和False 不同的数据类型都有不同的功能,例如:整型可以加减乘除 而 字符串只能加(拼接)和乘法。 如果想要做转换可遵循一个基本规则:想转换什么类型就让他包裹一些。例如:str(666)是将整型转换为字符串、int("888")是将字符串转换为整型,具体转换示例如下: **转为整型:** ```python # ####### 字符串转整型的格式为:int(字符串) ####### print( int("666") ) print( int("100") + int("200") ) # 报错,“hula”应该转换为数字多少呢?没法确定。所以Python规定只有 "数字" 格式的字符串的才能转为整型。 print( int("hula") ) # 分别输出整型: 666、300、报错 # ####### 布尔值转整型的格式为:int(布尔值) ####### print( int(True) ) print( int(False) ) # 布尔值转换为整型,分别输出:1 、 0 ``` **转为字符串:** ```python # ####### 整型转字符串的格式为:str(整型) ####### print( str(666)+str(999) ) # 整型转换为字符串,然后两个字符串拼接,最终输出字符串:666999 # ####### 布尔值转字符串的格式为:str(布尔值) ####### print( str(True) ) print( str(False) ) print( str(True) + str(False) ) # 布尔值转换字符串,分别输出三个字符串:True 、 False 、 TrueFalse ``` **转布尔值:** ```python # ####### 整型转布尔值的格式为:bool(整型) ####### print(1) print(9) print(-100) print(0) # 整型转换为布尔值,分别输出布尔值:True 、 True 、 True 、 False # 注意:整型转布尔值时,只有0转换为False,其他均为True # ####### 字符串转布尔值的格式为:bool(字符串) ####### print("你好") print("fuck you") print("666") print("0") print("") # 字符串转换为布尔值,分别输出:True、True、True、True、False # 注意:整型转布尔值时,只有空字符串转换为False,其他均为True ``` 以上就是三种数据类型的相互转换,第一次学可能会让你觉得比较知识点太多,记不住!!! 所以,我们来对转换做一个总结,方便记忆: - 想要转换成什么类型,就要用什么来包裹一下。(int/str/bool) - 字符串转整型时,只能转那些引号内是数字的字符串,例如:"88"、"99",否则报错 - 其他类型转布尔值时,只有 0 和 "" 会转为False,其他均为True **练习题** 1. 计算整型50乘以10再除以5的商并使用print输出。 2. 判断整型8是否大于10的结果并使用print输出。 3. 计算整型30除以2得到的余数并使用print输出。 4. 使用字符串乘法实现 把字符串"我爱我的祖国"创建三遍并拼接起来最终使用print输出。 5. 判断 字符串"wupeiqi"和"alex"是否相等的结果并使用print输出。 6. 判断 整型666和整型666是否相等的结果并使用print输出。 7. 判断 字符串"666"和整型666是否相等的结果并使用print输出。 8. 看代码写结果(禁止运行代码): ```python print( int("100")*3 ) print( int("123") + int("88") ) print( str(111) + str(222) ) print( str(111)*3 ) print( int("8") > 7 ) print( str(111) == 111 ) print( bool(-1) ) print( bool(0) ) print( bool("") ) print( bool("你好") ) print( True == True) print( True == False) print( bool("") == bool(0) ) ```
注意
:类型转换不是改变原来值,实际在底层是新创建了一个值。例如有整数注意:类型转换不是改变原来值,而是新创建了一个新的值。例如有整数 6 ,然后使用 str(6) 转化了一下得到 "6",实际上这个字符串"6"是依据整数6新创建的。 ## 5. 变量 变量,其实就是我们生活中起别名和外号,让变量名指向某个值,格式为: 【变量名 = 值】,以后可以通过变量名来操作其对应的值。例如: ```python age = 18 name = "武沛齐" flag = 1 > 18 address = "河北邯郸" + name print(age) # 输出 18 print(name) # 输出 武沛齐 print(flag) # 输出 False print(address) # 输出 河北邯郸武沛齐 ``` ### 5.1 变量名 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']*
- 二条建议(遵循可以显得更加专业,不遵循也可以正常运行不报错) - 下划线命名法,多个单词表示的变量名用下划线连接(均小写) ```python father_age = 58 father_name = "武沛齐" brother_name = "Alex" ``` - 见名知意,通过阅读变量名就能知道此变量的含义。 ```python age = 18 color = "red" current_user_first_name = "勒布朗" ``` **练习题**:查看下面的变量名定义是否正确?(不考虑建议) ```python name = "吉诺比利" name0 = "帕克" name_1 = "邓肯" _coach = "波波维奇" _ = "卡哇伊" 1_year = "1990" year_1_ = "1990" _1_year = "1990" nba-team = "马刺" new*name = "伦纳德" ``` ### 5.2 内存指向 通过学习上述变量知识让我们对变量了有了初步认识,接下来我们就要从稍稍高级一些的角度来学习变量,即:内存指向(在电脑的内存中是怎么存储的)。 **情景一** ```python name = "wupeiqi" ``` 在计算机的内存中创建一块区域保存字符串"wupeiqi",name变量名则指向这块区域。  **情景二** ```python name = "wupeiqi" name = "alex" ``` 在计算机的内存中创建一块区域保存字符串"wupeiqi",name变量名则指向这块区域。然后又再内存中创建了一块域保存字符串"alex",name变量名则指向"alex"所在的区域,不再指向"wupeiqi"所在区域(无人指向的数据会被标记为垃圾,由解释器自动化回收)  **情景三** ```python name = "wupeiqi" new_name = name ``` 在计算机的内存中创建一块区域保存字符串"wupeiqi",name变量名则指向这块区域。new_name变量名指向name变量,因为被指向的是变量名,所以自动会转指向到name变量代表的内存区域。  **情景四** ```python name = "wupeiqi" new_name = name name = "alex" ``` 在计算机的内存中创建一块区域保存字符串"wupeiqi",name变量名则指向这块区域(灰色线), 然后new_name指向name所指向的内存区域,最后又创建了一块区域存放"alex",让name变量指向"alex"所在区域.  **情景五** ```python num = 18 age = str(num) ``` 在计算机的内存中创建一块区域保存整型18,name变量名则指向这块区域。通过类型转换依据整型18再在内存中创建一个字符串"18", age变量指向保存这个字符串的内存区域。  至此,关于变量的内存相关的说明已讲完,由于大家都是初学者,关于变量的内存管理目前只需要了解以上知识点即可,更多关于内存管理、垃圾回收、驻留机制等问题在后面的课程中会涉及。 **练习题** 1. 看代码结果 ```python alex_length = 3 wupeiqi_length = 18 total = alex_length + wupeiqi_length print(total) ``` 2. 按要求写代码 ```python # 假设age为小明的年龄 age = 18 # 问:已知小李比小明大3岁,计算小李年龄赋值给ming_age变量并输出。 # 问:已知大刘比小明和小李年龄的和还要大5岁,计算大刘的年龄赋值给liu_age变量并输入。 ``` 3. 看代码写结果 ```python nickname = "一米八大高个" username = nickname username = "弟弟" print(nickname) print(username) ``` 4. 看代码写结果 ```python nickname = "一米八大高个" username = nickname nickname = "弟弟" print(nickname) print(username) ``` 5. 看代码写结果 ```python nickname = "一米八大高个" username = "弟弟" text = username + nickname print(text) ``` 6. 看代码写结果 ```python nickname = "一米八大高个" username = nickname nickname = "弟弟" text = username + nickname print(text) ``` 7. 看代码写结果 ```python string_number = "20" num = int(string_number) data = string_number * 3 print(data) value = num * 3 print(value) ``` ## 6. 注释 写代码时候,如果想要对某写内容进行注释处理,即:解释器忽略不会按照代码去运行。 - 单行注释,对一行或一行中某一段内容进行注释,格式:#号还开头。 ```python # 单行注释,解释器忽略此行,不按照代码去解释此行代码。 name = 'alex' age = 18 # 单行注释,解释器忽略#后面的内容,不按照代码去解释。 ``` - 多行注释,对多行进行注释。 ```python """ 一行 又一行 注释多行,三引号括起来的内容解释器会忽略,不按照代码去解释代码。 """ print("资源分享平台pythonav.com,奥利给!!!") ``` ## 7. 输入 学了上面的那些知识点,我们就可以实现 先定义一些数据类型 然后再让这些数据类型进行一些操作,最终通过print来进行输出。 所以 通过上述的知识点只能完成规定死的逻辑,最终输入得到结果。
**那么问题来了**
,如果想要实现用户交互怎么做呢? 例如: - 让用户输入账号和密码,代码检测用户名密码是否正确? - 让用户输入数字,代码判断数字进行抽奖。 这些功能均需要让用户输入一些值,然后我们根据用户输入的值进行相应的操作,接下来咱们就来学习如何让用户可以输入一些内容,然后咱们对输入的内容进行操作: ```python # 第一步:执行 input('请输入用户名:') ,输出区域 会提示用户来输入"请输入用户名" # 第二步:在下方任意输入,输入之后点击回车;之后会讲输入的内容赋值给name变量,name就代指你输入的内容 name = input('请输入用户名:') # 第三步:输出name变量代指的值,即:输出刚才输入的内容 print(name) ``` 
** 特别注意 **:
基于input输入的内容是字符串类型,即使输入了一个数字。 **示例1**:提示输入姓名,然后给姓名后面拼接一个“烧饼”,提示输入姓名,然后给姓名后面拼接一个“烧饼”,最终打印结果。 ```python name = input("请输入姓名:") text = name + "烧饼" print(text) ``` **示例2**:提示输入姓名/位置/行为,然后做拼接并打印:xx 在 xx 做 xx 。 ```python name = input("请输入姓名:") address = input("请输入位置:") action = input("请输入行为:") data = name + "在" + address + action print(data) ``` **示例3**:提示输入两个数字,计算两个数的和。 ```python num1 = input("请输入一个数字:") num2 = input("请再输入一个数字:") value = int(num1) + int(num2) print(value) ``` ## 8. 条件语句 生活中我们经常说:`如果 XX,就XX。` 和 `如果 XX,就XX,否则就 XX。` > 如果我是女生,就让我那些单身20年的哥们好好爽爽。 如果我是你爸,我就特么天天揍你。 如果把Alex变成狗,就天天喊他狗崽子。 如果我有1000w,就去找各种大模,否则就只能找大妈了。 在Python代码中想根据条件不同做不同操作,就可以使用if条件语句,他的书写个数如下: ```python if 条件 : 条件成立,则执行这一块代码 else : 条件不成立,则执行这一块代码 # 如果条件不成立不做任何操作,就可以else省去,只有: if 条件: 条件成立,则执行这一块代码 ``` 注意:if和else下面的代码块都需要有相同缩进(建议4个空格) ### 7.1 基本条件语句 关于条件语句我们通过示例代码来进行讲解,例如: - 示例 1 ```python print("开始") if 5 == 5: print("原来5等于5") else: print("5居然不等于5") print("结束") ``` - 示例 2: ```python if 5 == "5": print("整数5等于字符串5") else: print("整数5居然不等于字符串5") ``` - 示例 3: ```python num = 19 if num > 10: print("num变量对应值大于10") else: print("num变量对应值不大于10") ``` - 示例 4: ```python username = "wupeiqi" password = "666" if username == "wupeiqi" and password == "666": print("恭喜你,登录成功") else: print("登录失败") ``` - 示例 5: ```python username = "wupeiqi" if username == "wupeiqi" or username == "alex": print("VIP大会员用户") else: print("普通用户") ``` - 示例 6: ```python number = 19 if number%2 == 1: print("number是奇数") else: print("number是偶数") ``` - 示例 7 ```python print("开始") if 5 == 5: print("原来5等于5") print("结束") ``` ** 练习题 ** 1. 提示用户输入用户名和密码,用户名等于"wupeiqi"且密码等于"uuu"就输出登录成功;否则输出登录失败。 2. 猜数字,提示用户输入一个数字,判断数字如果大于10,就输出猜错了;否则输出猜对了。 3. 提示用户输入一个数字,判断是否为偶数,是偶数则输出 偶偶偶数,否则输出 奇奇奇数。 ### 7.2 多条件判断 如果判断逻辑中有多个条件,分别对应多个操作,可以是使用条件语句的if elif 实现,格式如下: ```python if 条件A: 条件A成立则执行此处代码 elif 条件B: 条件A不成立,条件B成立,则执行此处代码 elif 条件C: 条件A/B都不成立,条件C成立,则执行此处代码 ... else: 以上条件都不成立,则执行此处代码(如果没有功能,也可以把else省略) ``` **示例:** 用户输入数字,判断是否等于6,如果大于6则输出 太大了,小于6则输出 太小了,等于6则提示 刚刚好 ```python num = input("请输入数字") data = int(num) if data > 6: print("太大了") elif data == 6: print("刚刚好") else: print("太小了") ``` ### 7.2 条件语句嵌套 条件语句可以进行嵌套,用以完成更加复杂的条件判断。 嵌套时候,一定要注意通过缩进来区分代码快之间的关系。 ```python if 条件A: if 条件B : 写代码... else: 写代码... elif 条件C: 写代码... else: if 条件D: 写代码... ``` 示例:模拟10086客服提醒。 ```python print("欢迎致电10086,我们提供了如下服务: 1.话费相关;2.业务办理;3.人工服务器") n1 = input("请选择要咨询的服务序号") number = int(n1) if number == 1: cost = input("查询花费请按1;交话费请按2;") if cost == "1": print("话费剩余100元") elif cost == "2": print("缴纳话费10000元成功") else: print("输入错误") elif number == 2: cost = input("宽带业务请按1;协议款余额请按2;") if cost == "1": print("已免费给你家装宽带了") elif cost == "2": print("协议款余额为0") else: print("输入错误") elif number == 3: print("客服007号为您服务") else: print("序号输入错误,没有相关服务器") ``` ## 作业 1. 谈谈你了解的编码以及为什么会出现乱码的现象? 2. 用print打印出下面内容: ``` ⽂能提笔安天下, 武能上⻢定乾坤. ⼼存谋略何⼈胜, 古今英雄唯是君。 ``` 3. 变量名的命名规范和建议? 4. 如下那个变量名是正确的? ```pythonn name = '武沛齐' _ = 'alex' _9 = "老男孩" 9name = "宝浪" oldboy(edu = 666 ``` 5. 设定一个理想数字比如:66,让用户输入数字,如果比66大,则显示猜测的结果大了;如果比66小,则显示猜测的结果小了;只有等于66,显示猜测结果正确。 6. 提⽰⽤户输入⿇花藤. 判断⽤户输入的对不对。如果对, 提⽰真聪明, 如果不对, 提⽰你 是傻逼么。 7. 写程序,成绩有ABCDE5个等级,与分数的对应关系如下. ```python A 90-100 B 80-89 C 60-79 D 40-59 E 0-39 ``` 要求用户输入0-100的数字后,你能正确打印他的对应成绩等级.
用户评论
登录
或
注册
后才能发表评论
目录
学前必备
第一章 环境搭建
第二章 快速入门
第三章 Python基础
第四章 进制和编码
第五章 数据类型(一)
第六章 数据类型(二)
第七章 数据类型(三)
第八章 总结和考试题
第九章 实战案例
第六章 文件操作
第七章 函数
迭代器
生成器
装饰器
模块
开发规范
面向对象
附赠:vs code 环境搭建
回复