模块一 python基础语法
day2–快速上手
今日概要
课程目标:学习Python最基础的语法知识,可以用代码快速实现一些简单的功能。
课程概要:
- 初识编码(密码本)
- 编程初体验
- 输出
- 初识数据类型
- 变量
- 注释
- 输入
- 条件语句
1.编码(密码本)
计算机中所有的数据本质上都是以0和1的组合来存储。
在计算机中有这么一个编码的概念(密码本)。
小 -> 01111111 00011010 010110110
佩 -> 01001111 10010000 001110100
齐 -> 11111111 00000000 010101010
在计算机中有很多中编码
每种编码都有自己的一套密码本,都维护这自己的一套规则,如:
utf-8编码:
小 -> 01111111 00011010 010110110
佩 -> 01001111 10010000 001110100
齐 -> 11111111 00000000 010101010
gbk编码:
小 -> 11111111 00000010
佩 -> 01001111 01111111
齐 -> 00110011 10101010
所以,使用的不同的编码保存文件时,硬盘的文件中存储的0/1也是不同的。
注意事项:以某个编码的形式进行保存文件,以后就要以这种编码去打开这个文件。否则就会出现乱码。
UTF-8编码去保存小佩齐:01111111 00011010 010110110 01001111 10010000 001110100 11111111 00000000 010101010
GBK编码形式去打开:乱码
2.编程初体验
-
编码必须要保持:保存和打开一直,否则会乱码。
-
默认Python解释器是以UTF-8编码的形式打开文件。如果想要修改Python的默认解释器编码,可以这样干:
# -*- coding:gbk -*- print("我是你二大爷")
-
建议:所有Python代码文件的都要以UTF-8编码保存和读取。
3.输出与换行
将结果或内容呈现给用户。
print("种一棵树好的时间是十年前,其次是当下")
print就是打印输出。
关于输出:
-
默认print在尾部会加换行符
print("看风景美如画") print("想吟诗赠天下") 输出会带换行符: 看风景美如画 想吟诗赠天下
-
不换行
print("人生苦短",end="") print("我学python",end="") 输出: 人生苦短我学python
print("看着风景美如画",end=",") print("本想吟诗增天下",end=".") 输出: 看着风景美如画,本想吟诗增天下.
使用逗号分割与
end=""
是打印不换行,也可以再end=""
等于中指定换行符。 -
一个print换行,sep=’\n’
print("文能提笔安天下,","武能上马定乾坤。","心存谋略何人胜,","古今英雄唯是君。",sep='\n') 输出: 文能提笔安天下, 武能上马定乾坤。 心存谋略何人胜, 古今英雄唯是君。
4.初始数据类型
- int 整形,整数
- str 字符串
- bool 布尔类型中有两个值:True / False
- …
4.1 整形(int)
整形,其实就是以前数学课上讲的整数(不包含小数),在写代码时用于表示整数相关的东西,例如:年龄、存款、尺寸、手机号等。
一般我们提到的:5、18、22、99、… 等整数 在Python中都称为是整型,且支持加减乘除,取余,指数等操作。
print(666)
print(2 + 10)
print(2 * 10)
print(10 / 2)
print(10 % 3)
print(2 ** 4)
4.2 字符串(str)
字符串,其实就是我们生活中的文本信息。例如:姓名、地址、自我介绍等。
字符串有一个特点,他必须由引号引起来,如:
单行字符串
print("Bella是逗比")
print('逗比是Bella')
print('天坑"Bella')
print("中国北京昌平区")
多行字符串
print("""中国北京昌平区""")
print('''中国北京昌平区''')
在需要打印双引号的时候,可以用单引号引起来,也支持三(单双)引号,表示多行内容。
print("""xxxx
yyyy
ooooo
xxxzzz
""")
输出多行:
xxxx
yyyy
ooooo
xxxzzz
对于字符串:只支持加与乘
-
加,两个字符串可以通过加号拼接起来。
print( "Bella" + "坑逼" )
-
乘,让整形和字符串进行相乘,以实现让字符串重复出现N次并拼接起来。
print(3 * "我想吃饺子")
总结:
+
可以拼接字符串
*
可以让整数和字符串进行相乘,以达到实现让字符串重复出现N次拼接的效果
小技巧
print()括号两边不要使用空格
使用 pycharm--code--Reformat Code 可以让代码自动格式化,变得更加规范
4.3布尔类型
布尔类型中总共就两个值:True/False
print(1 > 2)
print(False)
print(1 == 1)
print(True)
name = input("请输入入你的用户名:")
if name == "Bella":
print("用户登录成功")
else:
print("用户登录失败")
整形与字符串之间无法比较大小,只能比较是否相等。
1 > 2
1 == 3
"Bella" == "ella"
1 == "Bella"
1 > "Bella" # 是无法进行比较大小
4.4类型转换
数据类型int/str/bool,他们都有自己不同的定义方式;
- int,整形定义时,必须是数字,切无引号,例如:5,8,9
- str,字符串定义时,必须用双引号括起来,例如: “中国”,“小猪佩奇”,“888”
- bool,布尔值定义时,只能写True和False
不同的数据类型都有不同的功能,例如:整型可以加减乘除等运算,而字符串只能加(拼接)和乘法。
如果想要做转换可遵循一个基本规则:想转换什么类型就让他包裹一下。
例如:str(666)="666"是将整型转换为字符串,int(“888”)是将字符串转整型888.
# 字符串转换为整形(渡可渡-之人)
int("666")
int("999")
"6" + "9" 的结果应该是: "69"
int("6") + int("9") 的结果是:15
int("alex是sb") 报错
# 布尔类型转换为整形
int(True) 转换完等于 1
int(False) 转换完等于 0
转换为字符串
# 整型转字符串
str(345)
str(666) + str(9) 结果为:"6669"
# 布尔类型转换为字符串
str(True) "True"
str(False) "False"
转换为布尔类型
# 整形转布尔
bool(1) True
bool(2) True
bool(0) False
bool(-10) True
# 字符串转布尔
bool("Bella") True
bool("什么鬼") True
bool("") False
bool(" ") True
三句话搞定类型转换:
-
其他所有类型转换为布尔类型时,除了空字符,0 以外其他都是True。
-
字符串转整型时,只有这种 “998” 格式的字符串才可以转换为整型,其他都报错
-
想要转换为哪种类型,就是要这类型的英文包裹起来。
str(...) int(...) bool(...)
注:类型转换不是改变原来值,实际是在底层新创建了一个值。例如有整数6,然后使用str(6)转换得到"6",实际上这个字符串"6" 是依据整数6新创建的。
5.变量
变量,其实就是我们生活中起别名和外号,让变量名指向某个值,格式为:【变量名 = 值】,以后可以通过变量名来操作其对应的值。
nane = "小猪佩奇"
print(name)
age = 10
name = "Bella"
flag = 1 > 18
address = "深圳南山" + "必胜客"
addr = "深圳南山" + "必胜客" + name
print(addr)
print(flag)
age = 18
numer = 1 == 2
# 注意区分 "=" 与 "=="
注意:
- 给变量赋值 age = 18
- 让age代指值 age=18
5.1变量名的规范
-
变量名只能有字母,数字,下划线组成
-
不能以数字开头
-
不能使用python内置的关键字
>>> import keyword >>> keyword.kwlist
[‘False’, ‘None’, ‘True’, ‘and’, ‘as’, ‘assert’, ‘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.2 变量内存指向关系
内存指向,变量在电脑的内存中是怎么存储
**情景一**
```python
name = "suse"
>>> name="suse"
>>> print(name)
suse
在计算机的内存中创建一块区域保存字符串"suse",name变量名则指向这块区域。
情景二
name = "suse"
name = "bella"
>>> name = "suse"
>>> name = "bella"
>>> print(name)
bella
在计算机的内存中创建一块区域保存字符串"suse",name变量名则指向这块区域。然后又再内存中创建了一块域保存字符串"bella",name变量名则指向"bella"所在的区域,不再指向"suse"所在区域(无人指向的数据会被标记为垃圾,由解释器自动化回收)
情景三
name = "suse"
new_name = name
>>> name = "suse"
>>> new_name = name
>>> print(name)
suse
>>> print(new_name)
suse
在计算机的内存中创建一块区域保存字符串"suse",name变量名则指向这块区域。new_name变量名指向name变量,因为被指向的是变量名,所以自动会转指向到name变量代表的内存区域。
情景四
name = "suse"
new_name = name
name = "bella"
>>> name = "suse"
>>> new_name = name
>>> name = "bella"
>>> print(name)
bella
>>> print(new_name)
suse
在计算机的内存中创建一块区域保存字符串"suse",name变量名则指向这块区域, 然后new_name指向name所指向的内存区域,最后又创建了一块区域存放"bella",让name变量指向"bella"所在区域.
情景五
num = 18
age = str(num)
>>> num = 18
>>> age = str(num)
>>> print(num)
18
>>> print(age)
18
在计算机的内存中创建一块区域保存整型18,name变量名则会指向这块区域。通过类型转换依据整型18再在内存中创建一个字符串"18",age变量指向保存这个字符串的内存区域。
除了变量的内存管理以为还有关于垃圾回收,驻留机制等知识。
6. 注释
写代码时候,如果想要对某写内容进行注释处理,即:解释器忽略不会按照代码去运行。
-
单行注释
注意:快捷点 command + ? 、 control + ?
-
多行注释
# #号注释 # 声明一个name变量 # 声明一个name变量 name = "Bella" """ 三个双引号 多行注释内容 多行注释内容 """ age = 19 ''' 三个单引号 多行注释 '''
7. 输入
输入,可以实现程序和用户之间的交互。
# 1.右边 input("请输出用户名:") 使用用户输入内容
# 2.将用户输入的内容赋值给name变量
name = input("请输入用户名:")
if name == "bella":
print("登录成功")
else:
print("登录失败")
# 将输入复制给变量,然后输出
data = input(">>>")
print(data)
特别注意: 用户输入的任何内容本质上都是字符串。
1.提示输入姓名,然后给姓名后面拼接一个“烧饼”,提示输入姓名,然后给姓名后面拼接一个“烧饼”,最终打印结果。
name = input("请输入用户名:")
test = name + "烧饼"
print(test)
2.提示输入 姓名/位置/行为,然后做拼接并打印:xx 在 xx 做 xx 。
name = input("请输入用户名:")
address = input("请输入位置:")
action = input("请输入行为:")
text = name + "在" + address + action
print(text)
3.提示输入两个数字,计算两个数的和。
number1 = input("请输入一个数字:") # "1"
number2 = input("请输入一个数字:") # "2"
value = int(number1) + int(number2)
print(value)
8.条件语句
if 条件 :
条件成立之后的代码...
条件成立之后的代码...
条件成立之后的代码...
else:
条件不成立之后执行的代码...
条件不成立之后执行的代码...
条件不成立之后执行的代码...
name = input("请输入用户名:")
if name == "bella":
print("sb")
else:
print("good")
统一缩进,使用四个空格或者tab。
8.1 基本条件语句
-
示例1
print("开始") if True: print("123") else: print("456") print("结束")
-
示例2
print("开始") if 5==5: print("123") else: print("456") print("结束")
-
示例3
num = 10 if mum > 10: print("num变量对应值大于10") else: print("num变量对应值小于10")
-
示例4
usename = "huitailang" password = "888" if username == "huitailang" and password == "888": print("恭喜,登录成功") else: print("登录失败")
-
示例5
usename = "xiyangyang" if usename == "xiyangyang" or username == "lanyangyang": print("羊村大会员") else: print("普通用户")
-
示例6
number = 19 if number%2 == 1: print("number是奇数") else: print("number是偶数")
number = 19 data = number%2 == 1 if data: print("number是奇数") else: print("number是偶数")
-
示例7
if 条件: 成立
print("开始") if 5 == 5: print("5等于5") print("结束")
8.2 多条件判断
if 条件A:
A成立,执行此缩进中的所有代码
...
elif 条件B:
B成立,执行此缩进中的所有代码
...
elif 条件C:
C成立,执行此缩进中的所有代码
...
else:
上述ABC都不成立。
num = input("请输入数字")
data = int(num)
if data>6:
print("太大了")
elif data == 6:
print("刚刚好")
else:
print("太小了")
score = input("请输入分数")
data = int(score)
if data > 90:
print("优")
elif data > 80:
print("良")
elif data > 70:
print("中")
elif data > 60:
print("差")
else:
print("不及格")
8.3条件嵌套
if 条件A:
if 条件A1:
...
else:
...
elif 条件B:
...
模拟10086客服
print("欢迎致电10086,我们提供了如下服务:1.话费相关;2.业务办理;3.人工服务")
choice = input("请选择服务序号:")
if choice == "1":
print("话费相关业务")
cost = input("查询话费请按1;交话费请按2")
if cost == "1"
print("查询话费余额为100")
elif cost == "2":
print("交话费")
else:
print("输入错误")
elif choice == "2":
print("业务办理")
elif choice == "3":
print("人工服务")
else:
print("序号输入错误")
优化
score = input("请输入一个数字:")
data = int(score)
if 90 <= data <= 100:
print("A")
elif 80 <= data <= 89:
print("B")
elif 60 <= data <= 79:
print("C")
elif 40 <= data <= 59:
print("D")
elif 0 <= data <=39:
print("E")
else:
print("输入错误")