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 - 基础语法篇(第二天)的主要内容,如果未能解决你的问题,请参考以下文章

python学习第二天-基本语法

第二天 Python3.4.2 里面的字典 列表解析等等

Java基础语法实例——实习第二天

Python初学者第二天

小白挑战学c语言第二天----基础语法

30天python从零到一---第二天:python基础语法