day02快速上手
课程目标:学习Python最基础的语法知识,可以用代码快速实现一些简单的功能
课程概要:
- 初识编码(密码本)
- 编程体验
- 输出
- 初识数据类型
- 变量
- 注释
- 输入
- 条件语句
1. 编码
计算机中所有的数据本质上都是以0和1的组合来存储
在计算机中有这么一个编码的概念(密码本)
每种编码都有自己的一套密码本,都维护自己的一套规则,如:
utf-8编码:
刘 -> 01111111 000110101 0100110101
小 -> 01000100 000011100 1011001010
伟 -> 10101011 011110100 1110011101
gkb编码
刘 -> 00010111 110100111 1101001001
小 -> 01000100 000011100 1011001010
伟 -> 11101101 111010110 0101100110
所以,使用的不同的编码保存文件时,硬盘的文件中存储的0/1也是不同的
注意:以某个编码的形式保存文件,以后就要以这种编码去打开这个文件,否则就会出现乱码
2. 编程体验
- 编码必须要保持:保存和打开一致,否则会乱码
- 默认Python解释器UTF-8编码的形式打开文件。如果想要修改Python的默认解释器编码,可以如下形式:
# -*- coding:gbk -*-
print('我是你二大爷')
- 建议:所有Python代码文件都以UTF-8编码保存和读取。
3. 输出
将结果或内容想要呈现给用户
print("看着风景美如画")
print(adidas)
关于输出
- 默认print在尾部会加换行符
print('看这风景美如画')
print('本想吟诗赠天下')
输出:
看这风景美如画
本想吟诗赠天下
- 想要补换行,可以这样做:
print('看这风景美如画', end='')
print('本想吟诗赠天下', end='')
输出:
看这风景美如画本想吟诗赠天下
练习题
print('输出自己的姓名:刘小伟')
# 换行输出
print('春眠不觉晓,')
print('处处闻啼鸟。')
print('夜来风雨声,')
print('花落知多少。')
# 一行输出
print('春眠不觉晓,', end='')
print('处处闻啼鸟。', end='')
print('夜来风雨声,', end='')
print('花落知多少。', end='')
输出:
输出自己的姓名:刘小伟
春眠不觉晓,
处处闻啼鸟。
夜来风雨声,
花落知多少。
春眠不觉晓,处处闻啼鸟。夜来风雨声,花落知多少。
4. 初识数据类型
4.1 整型(int)
整型、整数
整型,其实就是以前数学课上讲的整数(不包含小数),在写代码时用于表示整数相关的东西,例如:年龄、存款、尺寸、手机号等。一般我们提到的:5、18、22、99…等整数在Python中都称为整型,且支持加/减/乘/除/指数等操作。
print(666)
print(2 + 10)
print(2 * 10)
print(20 / 4)
print(10 % 3)
print(5 // 3)
4.2 字符串(str)
字符串,其实就是我们生活中等文本信息,例如:姓名,地址,自我介绍等
字符串有一个特点,必须由引号引起来,如:
单行字符串
print("我是Bruce_liu")
print('中国北京昌平区')
输出:
我是Bruce_liu
中国北京昌平区
多行字符串
print('''dfasfsakfjsakjfajfksa;kfsad;klfafas;
fasfjsakfsklafjklsa
fsadjksa;fasjdkfa;f;sa;f
fdsajklfjdas;f''')
输出:
dfasfsakfjsakjfajfksa;kfsad;klfafas;
fasfjsakfsklafjklsa
fsadjksa;fasjdkfa;f;sa;f
fdsajklfjdas;f
对于字符串,运算符只支持两种:
- 加, 两个字符串可以通过加号拼接起来
"alex" + '是金角大王吧'
'alex是金角大王吧'
print("alex" + '是金角大王吧')
print('alex是金角大王吧')
输出:
alex是金角大王吧
alex是金角大王吧
- 乘,让整型和字符串进行相乘,以实现让字符串重复出现N次并拼接起来
print('我想吃饺子' * 3)
输出:
我想吃饺子我想吃饺子我想吃饺子
4.3 布尔类型(bool)
布尔类型总共两个值:True / False
1 > 2
1 == 1
输出:
False
True
name = input('请输入用户名:')
if name == 'Alex':
print('用户登陆成功!')
else:
print('用户登陆失败!')
4.4 类型转换
上文数据类型int/str/bool有了初步了解,他们都有自己不同的定义方式。
- int,整型定义时,必须是数字且无引号,例如:5、8、9
- str,字符串定义时,必须用双引号括起来,例如:“中国”、“刘小伟”、“666”
- bool,布尔值定义时,只能写True和False
不同的数据类型都有不同的功能,例如:整型可以加减乘除而字符串只能加(拼接)和乘法。
如果想要做转换可遵循一个基本规则:想转换什么类型就让它包裹一下。例如:str(666)是将整型转换为字符串、int(‘888’)是将字符串转为整型。
转为整型:
# 字符串转换整型
int("666")
int('999')
"6" + "9" 结果是"69"
int("6") + int("9") 结果是15
# 布尔类型转换为整型
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('alex') True
bool('fdasfda') True
bool('') False
bool(' ') True
三句话搞定类型转换
- 其他所有类型转换为布尔类型时,除了空字符串、0以外其他都是True
- 字符串转整型时,只有那种“988”(数字型)格式的字符串才能转为整型,其他都报错
- 想要转为哪种类型,就用这类型的英文包裹一下就行
str(...)
int(...)
bool(...)
注意:类型转换不是改变原来值,实际在底层是新创建了一个值。例如有整数6,然后使用str(6)转化了一下得到“6”,实际上这个字符串“6”是依据整数6新创建的。
练习题
- 计算整型50乘以10再除以5的商并使用print输出
- 判断整型8是否大于10的结果并使用print输出
- 计算整型30除以2得余数并使用print输出
- 使用字符串乘法实现把字符串“我爱我的祖国”创建三遍并拼接起来最终使用
- 判断字符串"liuxiaowei"和"bruce"是否相等的结果并使用print输出
- 判断整型666和整型666是否相等的结果并使用print输出
- 判断字符串"666"和整型666是否相等的结果并使用print输出
- 看代码写结果(禁止运行代码)
print(int("100")*3) 300
print(int("123") + int("88")) 211
print(str(111)+str(222)) "111222"
print(str(111)*3) "111111111"
print(int("8")>7) True
print(str(111) == 111) False
print(bool("")) False
print(bool(-1)) True
print(bool(0)) False
print(bool("你好")) True
print(True == True) True
print(True == False) False
print(bool("") == bool(0)) True
print(50 * 10 / 5)
print(8 > 10)
print(30 % 2)
print('我爱我的祖国' * 3)
print('liuxiaowei' == 'alex')
print(666 == 666)
print(666 == str(666))
输出:
100.0
False
0
我爱我的祖国我爱我的祖国我爱我的祖国
False
True
False
5 .变量
变量,其实就是我们生活中起别名和外号,让变量名指向某个值,格式为:【变量名=值】,以后可以通过变量名来操作对应的值。
name = "刘小伟"
print(name) # 刘小伟
age = 18
name = 'alex'
flag = 1 > 18
address = '北京昌平' + '沙河' + name # "北京昌平沙河alex"
print(addr)
print(flag)
age = 18
number = 1 == 2 # False
注意:
- 给变量赋值 age = 18
- 让age代指 age =18
5.1 变量名的规范
age = 18
name = 'alex'
flag = 1 > 18
address = '北京昌平' + '沙河'
三个规范:
- 变量名只能由字母、数字、下划线组成
- 变量名不能以数字开头
na9me9 = "alex"
- 不能用Python内置的关键字
def = 'alex'
break = 123
[‘and’, ‘as’, ‘assert’, ‘break’ , ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘except’, ‘exec’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’,‘not’, ‘or’, ‘pass’, ‘print’, ‘raise’, ‘return’,‘try’, ‘while’, ‘with’, ‘yield’]
两个建议:
- 下划线连接命名(小写)
father_name = 'liuxiaowei'
brother_age = 19
- 见名知意
age = 18
color = 'red'
current_user_name = '吉诺比利'
n1 = 123 # 不可取
n2 = 456 # 不可取
练习题
name = '吉诺比利'
name0 = '帕克'
name_1 = '波波维奇'
_coach = '邓肯'
_ = '卡哇伊'
1_year = '1990' # 错误
_1_year = '1990'
nba-team = '马刺' # 错误
new*name = '伦纳德' # 错误
5.2 变量内存指向关系
通过学习上述变量知识让我们对变量有了初步认识,接下来我们就要从稍高级一些的角度来学习变量,即:内存指向(在电脑的内存中是怎么存储的)
情景一
name = 'liuxiaowei'
在计算机的内存中创建一块区域保存字符串’liuxiaowei’, name变量名则指向这块区域。
情景二
name = 'liuxiaowei'
name = 'alex'
在计算机的内存中创建一块区域保存字符串’liuxiaowei’, name变量则指向这块区域。然后又在内存中创建了一块区域,然后又在内存中创建了一块区域保存字符串’alex’, name变量名则指向’alex’,不再指向’liuxiaowei’所在区域(无人指向的数据会被标记为垃圾,由解释器自动回收)
情景三
name = 'liuxiaowei'
new_name = name
在计算机的内存中创建一块区域保存字符’liuxiaowei’, name变量名则指向这块区域。new_name变量名指向name变量,因为被指向的变量名,所以自动会转指向到name变量代表到内存区域
情景四
name = "liuxiaowei"
new_name = name
name = 'alex'
在计算机的内存中创建一块区域保存字符串"liuxiaowei", name变量名则指向这块区域(灰色线),然后new_name指向name所指向的内存区域,最后又创建了一块区域存放’alex’,让name变量指向’alex’所在区域
情景五
num = 18
age = str(num)
在计算机的内存中创建一块区域保存整型18,name变量名则指向这块区域。通过类型转换依据整型18再在内存创建一个字符串“18”,age变量指向保存这个字符串的内存区域
练习题
- 看代码结果
alex_length = 3
liuxiaowei_length = 18
total = alex_length + liuxiaowei_length
print(total)
输出:
21
- 按要求写代码
# 假设age为小明的年龄
age = 18
# 问:已知小李比小明大3岁,计算小李年龄赋值给ming_age 变量并输出
xiaoli_age = age + 3
ming_age = xiaoli_age
print(ming_age)
# 问:已知大刘比小明和小李年龄大和还要大5岁,计算大刘的年龄赋值给liu_age变量并输出
liu_age = xiaoli_age + ming_age + 5
print(liu_age)
- 看代码写结果
nickname = '一米八大高个'
username = nickname
nickname = '弟弟'
print(nickname) # ‘弟弟’
print(username) # '一米八大高个'
- 看代码写结果
nickname = '一米八大高个'
username = nickname
nickname = '弟弟'
print(nickname) # ‘弟弟’
print(username) # '一米八大高个'
- 看代码写结果
nickname = '一米八大高个'
username = '弟弟'
text = username + nickname
print(text) #'弟弟一米八大高个'
- 看代码写结果
nickname = '一米八大高个'
username = nickname
nickname = '弟弟'
text = username + nickname
print(text) # '一米八大高个弟弟'
- 看代码写结果
string_number = '20'
num = int(string_number)
data = string_number * 3
print(data) # '202020'
value = num * 3
print(value) #60
6. 注释
写代码的时候,如果想要对某些内容进行注释,即:解释器忽略不会按照代码去进行。
- 单行注释
# 声明一个name的变量
name = 'alex'
age = 19 # 这表明当前用户的年龄
注意:快捷键 command + ?(mac)、 control + ?(windows)
- 多行注释
"""
多行注释
多行注释
"""
7. 输入
输入,可以实现程序和用户之间的交互 。
# 1. 右边input('请输入用户名:')是让用户输入内容
# 2. 将用户输入的内容赋值给name变量
name = input('请输入用户名:')
if name == 'alex':
print('登陆成功!')
else:
print('登陆失败!')
data = input(">>>")
print(data)
特别注意:用户输入的任何内容本质上都是字符串
- 提示输入姓名,然后给姓名后面拼接一个“烧饼”,提示输入姓名,然后给姓名后面拼接一个“烧饼”,最终打印结果
name = input('请输入姓名:')
name = name + '烧饼'
print(name)
输出:
请输入姓名:alex
alex烧饼
- 提示输入姓名/位置/行为,然后做拼接并打印:xx在xx做xx
name = input('请输入姓名:')
address = input('请输入位置:')
action = input('请输入行为:')
text = name + '在' + address + action
print(text)
- 提示输入两个数字,计算两个数字的和
num1 = input('请输入一个数字:') # '1'
num2 = input('请输入一个数字:') # '2'
value = num1 + num2
print(value)
8. 条件语句
if 条件:
条件成立之后的代码...
条件成立之后的代码...
条件成立之后的代码...
else:
条件不成立之后执行的代码...
条件不成立之后执行的代码...
条件不成立之后执行的代码...
name = input('请输入姓名:')
if name == 'alex':
print('sb')
else:
print('db')
提醒:统一缩进问题(都是使用四个空格 = tab)
8.1 基本条件语句
- 示例1
print('开始')
if True:
print('123')
else:
print('456')
print('结束')
输出结果:
开始
123
结束
- 示例2
print('开始')
if 5 == 5:
print('123')
else:
print('456')
print('结束')
- 示例3
num = 19
if num > 10:
print('num 变量对应值大于10')
else:
print('num变量对应值不大于10')
- 示例4
usernam = 'liuxiaowei'
password = '666'
if username == 'liuxiaowei' and password == '666':
print('恭喜你,登陆成功')
else:
print('登陆失败')
- 示例5
username = 'liuxiaowei'
if username == 'liuxiaowei' or username == 'alxex':
print('VIP大会员用户')
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('结束')
练习题
- 提示用户输入用户名和密码,用户名等于‘liuxiaowei’且密码等于’uuu’就输出登录成功,否则输出登录失败
username = input('输入用户名:')
password = input('输入密码:')
if username == 'liuxiaowei' and password == 'uuu':
print(f'{username}登录成功')
else:
print(f'{username}登录失败')
- 猜数字,提示用户输入一个数字,判断数字如果大于10, 就输出猜错了;否则输出猜错了
number = input('请输入一个数字:')
if int(number) > 10:
print('猜错了')
else:
print('猜对了')
- 提示用户输入一个数字,判断是否为偶数,是偶数则输出偶数,否则输出奇数
number = input('请输入一个数字:')
data = int(number) % 2 == 0
if data:
print(f'{number}是偶数')
else:
print(f'{number}是奇数')
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:
...
elif 条件B:
...
if 条件A:
if 条件A1:
...
else:
...
elif 条件B:
...
模拟10086客服
print('欢迎致电10086, 我们提供如下服务:1.话费相关;2.业务办理;3.人工服务')
choice = input('请选择服务序号:')
if choice == '1':
print('话费相关业务')
cost = input('>>>\n查询话费请按1;交话费按2')
if int(cost) == 1:
print('查询话费余额为100')
elif int(cost) == '2':
print('交话费')
elif choice == '2':
print('业务办理')
elif choice == '3':
print('人工服务')
else:
print('序号输入错误')
总结
- 什么是编码?打开文件时为什么会出现乱码?
- pycharm如何设置文件编码
- python解释器去打开代码文件时,默认使用编码是什么?如何修改?
- print输入
- 各数据类型格式以及相关之间如何实现转换
- 变量的命名规范
- 用户通过input输入的内容均为字符串类型
- 条件语句
今日作业
- 谈谈你了解的编码以及为什么会出现乱码的现象?
- Python解释器默认编码是什么?如何修改?
默认编码:utf-8
在文件顶部通过设置:# -*- coding=编码 -*- 实现修改
- 用print打印出下面内容
文能提笔安天下,
武能上马定乾坤。
心存谋略何人胜,
古今英雄唯是君。
print('文能提笔安天下,')
print('武能上马定乾坤。')
print('心存谋略何人胜,')
print('古今英雄唯是君。')
print('文能提笔安天下,', '\n武能上马定乾坤。', '\n心存谋略何人胜,', '\n古今英雄唯是君。')
- 变量名的命名规范和建议?
- 如下哪个变量名是正确的?
name = '刘小伟'
_ = 'alex'
_9 = '老男孩'
9name = '宝浪' # 错误
oldboy(edu = 666 # 错误 出现了字母、数字、下划线以外的字符
- 设定一个理想数字比如:66, 让用户输入数字,如果比66大,则显示猜测结果正确
num = input('>>> \n输入一个数字:')
if int(num) > 66:
print('大了')
elif int(num) < 66:
print('小了')
elif int(num) == 66:
print('正确')
- 提示用户输入"爸爸",判断用户输入的对不对,如果对,提示真聪明,如果不对,提示你是傻逼么
person = input('>>> 输入爸爸:')
if person == '爸爸':
print('傻逼吗')
else:
print('真聪明')
- 写程序,成绩有ABCDE5个等级,与分数的对应关系如下:
A 90-100
B 80-89
C 60-79
D 40-59
E 0-39
要求用户输入0-100的数字后,你能正确打印他的对应成绩等级
score = input('>>> 输入成绩:')
if int(score) >= 90 and int(score) <= 100:
print('A')
elif int(score) >= 80 and int(score) < 90:
print('B')
elif int(score) >= 60 and int(score) < 80:
print('C')
elif int(score) >= 40 and int(score) < 60:
print('D')
elif int(score) >= 0 and int(score) < 40:
print('E')
else:
print('错误')