Python3 - 基础语法篇(第二天)
Posted 韩俊强
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3 - 基础语法篇(第二天)相关的知识,希望对你有一定的参考价值。
文章目录
1.print输出功能的详解
把程序中的数据输出到控制台,呈现给用户
print(*values, sep=' ', end='\\n', file)
*values ----> 表示输出的时候可以输出多个数据,数据之间使用逗号隔开
sep ----> 分隔符
在输出的目的地呈现数据的时候,每个数据之间的分隔符,默认是空格
end ----> 输出数据的结尾符 默认是换行
\\ --- 转义符
\\n --- 换行
\\t --- 制表符 tab键
\\r --- return 回车符
\\f --- 换页符
\\v --- 纵向制表符
这个就是每次print 都会使内容换行的原因
file ---> 表示的是输出内容的目的地,默认是控制台
Python2 和 Python3 输出的区别:
Python3 使用 print 必须要以小括号包裹打印内容,比如 print('hi')
Python2 既可以使用带小括号的方式,也可以使用一个空格来分隔打印内容,比如 print 'hi'
# 可以输出多个数据
print(10, True, 'hello')
# 修改呈现多个数据时, 数据之间的分隔符
print(10, True, 'hello', sep='-')
# \\ --- 转义符,可以使一些特定的符号持有特殊的含义
values = '\\table'
print(values)
# 想让\\t显示出来的话就是\\t 而不是制表符 需要转义符再次进行转义
print('\\\\table')
# 使用两个print 分别输出hello 和 world ,但是内容显示在一行
print('hello', end=' ')
print('world')
# 需求:把内容输出到文件中
# 因为文件对于程序属于外界资源,在程序中要向文件中输入内容
# 1.在程序中打开文件,建立与文件之间传递数据的一个通道
# open(文件的路径,打开的模式,文件的编码方式)
'''
文件的路径:
绝对路径:从具体的盘开始到指定文件的路径 C:\\software\\python
相对路径:参照物的 --- 当前正在编辑的文件
. --- 当前正在编辑的文件所在的文件夹
.. --- 当前正在编辑的文件所在的上一级文件夹
怎么定位文件的路径:
从正在编辑的文件出发,找和目的文件共同的文件夹,从这个共同的文件夹依次向下走,找到目的文件
例如:
找到content.txt 这个文件: ..\\code\\content.txt
找到test.txt : ..\\\\file\\\\test.txt
找到data.txt : 在同一文件下.\\可以省略,可以直接写 data.txt
打开文件的模式:
r --- read 只读
要求文件的路径对应的文件必须存在
w --- write 只写
文件不存在,会创建一个新的文件
如果文件存在,会把文件种的内容清空
清空写
a --- append 只写
文件不存在,会创建一个新的文件
如果文件存在,不会把文件种的内容清空
追加写
'''
file_handle = open('data.txt', 'w', encoding='utf-8')
print('nice to meet you', file=file_handle)
file_handle2 = open('data.txt', 'a', encoding='utf-8')
print('hello world', file=file_handle2)
2.input输入功能
跟用户进行交互,由用户在控制台录入数据传递到程序中
input(提示语)
在控制台上输入数据,回车结束输入
不管输入的是什么格式的数据,在程序中获取的都是字符串类型的数据
类型转换
需求:校验用户输入的数值是否是一个偶数
1.把数据转化为整数 int(数据)
场景: 1.对浮点型取整
3.14 int(3.14)
2.把字符串中的数据转化为整数
注意:字符串格式的数据必须得满足整数的格式的要求,否则会转换失败 '100'
默认转换的是十进制数据
如果想把字符串中其他进制的数据转化为十进制数据,需要提前设置一下转换的时候准许哪种数据进行转换
print(int('0b1101', base=2))
print(int('0x19ab', base=16))
2.把数据转化为浮点数 float(数据)
场景: 把字符串中的数据转化为浮点数
注意:字符串格式的数据必须得满足数值的格式的要求,否则会转换失败
3.把数据转为字符串类型, str(数据)
这种转换是数据的外层添加了一对引号
str(10) ----> '10'
str(3.14) ----> '3.14'
4.把指定序列的数据转化为列表类型 list(容器型数据)
list --- 列表
序列型、容器型的数据
name1 = '李白'
name2 = '杜甫'
name3 = '赵匡胤'
print(name1, name2, name3)
names = ['李白','杜甫','赵匡胤']
print(names)
list(容器型数据)
新建一个列表,列表中的元素来源于容器型数据
list('hello') ---> ['h','e','l','l','o']
# 1.把数据转化为整数
print(int(3.14))
print(int('100'))
# print(int('3.14')) 字符串格式的数据必须得满足整数的格式的要求,否则会转换失败 报错!
print(int(0b1101)) # 默认转换的是十进制数据
#如果想把字符串中其他进制的数据转化为十进制数据,需要提前设置一下转换的时候准许哪种数据进行转换
print(int('0b1101', base=2))
print(int('0x19ab', base=16))
# 2.把数据转为小数
print(float('100'))
print(float('3.145'))
# 注意:字符串格式的数据必须得满足数值的格式的要求,否则会转换失败
# print(float('3.14.13'))
3.字符串的格式化
根据一定格式的文本呈现数据
我叫xx,今年xx岁
% 在字符串中的应用
固定文本内容中如果存在未知项,需要使用占位符标记,然后通过 % 对占位符进行赋值
占位符:
%s --- 可以填充任意类型的数据
%d --- 占位的位置必须填充整型数据
%0nd --- n 就是按照几位数进行格式化,不足n位前面补0
'%03d' % 1 --- '001'
例如:# 秒数15678,转化为 时 分 秒 ===> 'xx:xx:xx' '08:30:03'
time = 15678
hour = time // 3600
minute = time % 3600 // 60
second = time % 60
message = '%02d:%02d:%02d' % (hour, minute, second)
%f --- 占位的位置必须填充数值类型的数据
%.nf ---- n 就是保留几位小数
'我叫%s,今年%d岁' % (姓名,年龄)
前面有几个占位符,后面就填充几个值,而且值和占位符之间是一一对应的
f 标记字符串进行格式化
在Python3.6之后才出现的
在呈现的文本中有未知项,使用包含未知项的数据
f'我叫数据,今年数据.'
保留两位小数 数据:.nf
按照几位数格式化 数据:0nd
n是一个具体的数据
4.range功能
用于生成等差的整数序列
range(stop) 在 [0, stop) 这个区间中按照步长1生成对应的等差数列
range(10) --- 0 1 2 3 4 5 6 7 8 9
range(start, stop) 在 [start, stop) 这个区间中按照 步长1 生成对应的等差数列
range(1, 10) --- 1 2 3 4 5 6 7 8 9
range(start, stop, step) 从 start 开始, 按照步长为step, 到stop(不包含stop) 生成对应的等差数列
range(1, 10, 3) --- 1 4 7
range(1, 10, -1) --- 空序列
range(10, 1, -1) --- 9 8 7 6 5 4 3 2 1
range(1, 10, 2) --- 1 3 5 7 9
# 1-100 中 取个位数是3的数据
num = range(3, 100, 10)
print(list(num))
# 1-100 中 取个位数是3的数据
num = range(3, 100, 10)
print(list(num))
# -1 -2 -3 -4 -5 ... -10的序列
seq = range(-1, -11, -1)
print(list(seq))
# 生成一个 -10 到 10的序列
seq1 = list(range(-10,11))
print(seq1)
5.随机模块random
#生成随机数的
import random
# 1. 在指定的序列中随机获取一个元素
seq = 'dncqxmcnvwcnmxzaNXCXK'
ele = random.choice(seq)
print(ele)
seq = range(1, 100)
ele = random.choice(seq) # 在1-99中随机选择一个整数
print(ele)
# 2. 在指定整数区间范围内随机选择一个整数
# random.randint(start, stop) 在[start, stop] 中随机选择一个整数, 注意比较少见的包含结束在内的.
num = random.randint(0, 3)
print(num)
# 3. 在指定整数区间范围内随机选择一个整数
# random.randrange() ===> random.choice(range())
print(random.randrange(10)) # random.choice(range(10)) 在0-9中随机选择一个整数
print(random.randrange(10, 1, -1)) # 在10 9 8 7 6 5 4 3 2 中随机选择一个整数
# 4. 在[0, 1) 之间随件生成一个小数
print(random.random())
# 5. 随机产生多个的 --- 结果是列表类型的
# 5.1 产生多个数据之间互不重复
# 在指定序列中,根据指定的个数n, 随机生成n互不重复的元素
# random.sample(序列, 个数)
value = random.sample('wqeretgrfdwqrgwtfefeqdwsqewrfeqdw', 5)
print(list(value))
# 5.2 产生的数据之间可能会有重复
# random.choices(序列, k=个数)
values = random.choices('wqefwdfejqkmqfqwofjwoqjfqocnviqdjq', k=5)
print(list(values))
# 6. 随机打乱序列(列表)中元素的顺序
chs = list('12345678')
print(chs)
random.shuffle(chs) # 影响序列本身 没有产生新的序列
print(chs)
练习: 在1-50中随机选择一个整数赋值给x, 在30-60中随机选择一个整数赋值给y,获取x和y中的最大值
import random
x = random.randint(1, 50)
y = random.randint(30, 60)
max_value = x > y and x or y # 三元运算
'''
采用的是 and 和 or 短路原则
'''
print(max_value)
6.流程控制语句
6.1顺序语句
代码的执行顺序: 从上向下执行的
语句: 语句结束的标记是分号, 在Python中建议是不写的
如果一行中包含了多条语句, 语句之间必须使用分号分割: print(1); print(2)
建议: 一行包含一个语句
6.2分支语句
单分支:
if 条件:
事情
双分支:
if 条件:
事情1
else:
事情2
多分支:
if 条件1:
事情1
elif 条件2:
事情2
elif 条件3:
事情3
else:
其他
# 1.单分支
age = int(input('请输入你的年龄:'))
if age >= 18:
print('可以进网吧')
# 2.双分支
money1 = float(input('请输入你有多少钱:'))
if money1 >= 100:
print('都要了')
else:
print('舍一个')
# 3.多分支
money = float(input('请输入你有多少钱:'))
if money >= 20:
print('打车')
elif money >= 6:
print('坐地铁')
elif money >= 2:
print('坐公交')
else:
print('地奔')
练习:
# 1. 键盘录入一个数, 判断其能不能被3整除 或者 能不能被5整除
num = int(input('请输入一个整数:'))
if num % 3 == 0 or num % 5 == 0:
print(f'num可以被3或5整除')
else:
print(f'num都不能被3或5整除')
'''
# 2. 键盘录入一个季节
如果是春 ---- 输出春意盎然
如果是夏 ---- 输出夏日炎炎
如果是秋 ---- 输出硕果累累
如果是冬 ---- 输出白雪皑皑
'''
season = str(input('请输入一个季节, 春/夏/秋/冬:'))
if season == '春':
print(f'season:春意盎然')
elif season == '夏':
print(f'season:夏日炎炎')
elif season == '秋':
print(f'season:硕果累累')
elif season == '冬':
print(f'season:白雪皑皑')
else:
print('你输入的不是季节哦~')
# 3. 随机生成一个100-300范围内的整数, 赋值给 sys_num
# 用户录入一个100-300内的整数, 赋值给user_num
# 如果用户录入的比随机的大, 提示大了
# 如果用户录入的比随机的小, 提示小了
# 如果用户录入的与随机的相等, 提示恭喜你,中奖了
import random
sys_num = random.randint(100, 300)
print(sys_num)
user_num = int(input('请输入100-300之间的整数:'))
if user_num > sys_num:
print('大了')
elif user_num < sys_num:
print('小了')
else:
print('恭喜你,中奖了')
6.3循环语句
循环 — 周而复始的重复做一件事情
循环分为两种:
1. 达到某种状态, 结束循环操作
1. 周而复始的没有结束的一直做下去---死循环
Python中提供的循环机制有两种, 这两种分别是 while 和 for 循环
1. while 主要是针对于明确的循环条件, 或者死循环
1. for 主要针对于序列元素的遍历 或者 明确次数的循环
while循环
语法格式:
while 循环条件:
重复操作
解读:
当循环条件成立的时候,才会执行重复的操作,当重复操作执行一次会再次判断循环条件是否成立,成立的话继续执行重复的操作,不成立的话循环语句结束
死循环
while True:
代码
while-else 结构
while 循环条件:
操作
else:
当且仅当循环条件不成立的时候 执行else [如果循环被break结束的, else不会执行]
i = 1
while i <= 10:
print(i)
# if i == 5:
# break
i += 1
else:
print(f'10个数据都打印完了')
'''
死循环:
while True:
代码
案例:
一段绳子长300m, 每天减掉一般, 问多少天后可以小于3m
'''
l = 300
day = 0
while l >= 3:
l /= 2
day += 1
while True:
l /= 2
day += 1
if l < 3:
break
print(f'day天后小于3m')
break和continue关键字
break --- 结束循环
continue ---- 结束当前次, 继续校验条件是否成立, 成立的话直接继续下一次循环
注意事项: break和continue 后面不能跟与其平级的代码, 因为这个代码永远不会执行
练习:
# break --- 结束循环
'''
打印1-100的数据, 遇到个位数是5同时这个数能被9整除时结束循环
'''
num = 1
while num <= 100:
# 判断个位数是5同时这个数能被9整除
if num % 10 == 5 and num % 9 == 0:
print(num)
break
num += 1
print('循环结束')
# continue --- 结束当前次, 回到循环条件校验的位置,条件满足继续执行下一次
'''
输出1-10中的偶数
'''
num2 = 1
while num2 <= 10:
if num2 % 2 == 0:
print(num2)
num2 += 1
print('已获得所有偶数')
'''
遇到奇数 跳过输出的操作
'''
num3 = 1
while num3 <= 10:
num3 += 1
if num3 % 2 != 0:
continue
print(num3)
print('已获得所有偶数')
for 循环
遍历序列中的每一个元素, 或者明确循环次数
语法:
for 变量 in 序列:
操作
依次获取序列中的元素,将元素值赋值给变量,通过变量进行对应词的操作
for-else
for 变量 in 序列:
操作
else:
当且仅当for循环中序列的元素全部遍历完成,并且不是被break结束的,else才会执行
import random
sys_num = random.randint(100, 300)
print(sys_num)
for m in range(1, 6):
print(f'第m次猜')
user_num = int(input('请输入100-300的整数:'))
if user_num > sys_num:
print('大了')
elif user_num < sys_num:
print('小了')
else:
print('猜中了')
break # 结束游戏
else:
print('次数用完了')
'''
练习: for循环打印'AbckdsadwqDWaW'这个里面的大写字母
'''
for i in 'AbckdsadwqDWaW':
if i >= 'A' and i <= 'Z':
print(i)
else:
print('已打印完成')
循环嵌套
某个循环又被重复的操作着 --- 循环嵌套
'''
打印
*
**
***
****
'''
for i in range(1,3):
for i in range(1, 7):
print('*', end='')
print()
'''
呈现数据的规律中有行有列 --- 循环嵌套
外层循环 --- 行
内层循环 --- 列
'''
'''
****
***
**
*
规律
行 列
1 4
2 3
3 2
4 1
列 = 5 - 行
'''
for r in range(1, 5):
for c in range(5 - r):
print('*', end='')
print()
'''
*
**
***
****
*****
'''
for r in range(1, 5):
for c in range(r):
print('*', end='')
print()
'''
练习: 99乘法表
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
'''
for i in range(1, 10):
for m in range(1, i+1):
print(f'm*i=i*m',end='\\t')
print()
7.字典
'''
字典:
存储的是具有映射关系的键值对, 是无序的
字典这种数据可以很好的体现出数据的意义
key:value
根据键查找值
键不能重复, 也不允许发生
'''
scores =
'语文':77, '数学':98, '英语': 89
# 获取字典中的数据
print(scores.get('语文'))
# 字典也是容器型数据
# for-in 遍历字典
for item in scores.items(): # 只能拿到键值, 并不能直接拿到键值对
print(f'item[0]成绩是item[1]分')
# 方法 items() --- 获取键值对组合
print(scores.items())
# 列表中存储的是一个个小元组, 小元组是键值对组合
# 或者
for key in scores: # 只能拿到键值, 并不能直接拿到键值对
print(f'key成绩是scores[key]分')
# 给变量赋值有三种结构
# 1. 一个变量一个变量的赋值
a = 10;
print(a)
# 2. 多个变量具有相同的一个值
m = n = p = 10
print(m, n, p) # 10 10 10
# 3. 多个变量赋值不同的值
x, y, z = 10, 20, 30
print(x, y, z) # 10 20 30
value = 10, 20, 30
# 解释器把 10, 20, 30 封装成一个元组, 一个数据赋值给变量value
print(value) # (10, 20, 30)
for key, value in scores.items():
print(key + '---', value) # 语文--- 77 数学--- 98 英语--- 89
以上是关于Python3 - 基础语法篇(第二天)的主要内容,如果未能解决你的问题,请参考以下文章