for 循环
1. 作用:
用来遍历可迭代对象的数据元素。
可迭代对象是指能依次获取数据元素的对象,例如:容器类型。
2. 语法:
for 变量列表 in 可迭代对象:
语句块1
else:
语句块2
3. 说明:
else子句可以省略。
在循环体内用break终止循环时,else子句不执行。
message = “我是齐天大圣孙悟空”
for item in message:
print(item)
for – 循环计数
range 函数
1. 作用:
用来创建一个生成一系列整数的可迭代对象(也叫整数序列生成器)。
2. 语法:
range(开始点,结束点,间隔)
3. 说明:
函数返回的可迭代对象可以用for取出其中的元素
返回的数字不包含结束点
开始点默认为0
间隔默认值为1
整数生成器:产生一个范围内的整数
开始值 结束值(不包含) 变化量
for item in range(0, 6, 1):
print(item) # 0 1 2 3 4 5
结束值(开始值默认为0,变化量默认为1)
for item in range(6):
print(item)
开始值,结束值
for item in range(3, 6):
print(item)
continue 语句
跳过本次,继续下次循环。
累加:1–100之间能被3整除的整数
方法1:
sum_value = 0
for number in range(1, 101):
满足条件则累加
if number % 3 == 0:
sum_value += number
print(sum_value)
方法2:
sum_value = 0
for number in range(1, 101):
不满足条件则跳过
if number % 3 != 0:
continue ** 跳过(当前元素,继续循环)**
sum_value += number
print(sum_value)
字符串
定义
由一系列字符组成的不可变序列容器,存储的是字符的编码值。
编码
1. 字节byte:计算机最小存储单位,等于8 位bit.
2. 字符:单个的数字,文字与符号。
3. 字符集(码表):存储字符与二进制序列的对应关系。
4. 编码:将字符转换为对应的二进制序列的过程。
5. 解码:将二进制序列转换为对应的字符的过程。
6. 编码方式:
--ASCII编码:包含英文、数字等字符,每个字符1个字节。
--GBK编码:兼容ASCII编码,包含21003个中文;英文1个字节,汉字2个字节。
--Unicode字符集:国际统一编码,旧字符集每个字符2字节,新字符集4字节。
--UTF-8编码:Unicode的存储与传输方式,英文1字节,中文3字节。
相关函数
1. ord(字符串):返回该字符串的Unicode码。
2. chr(整数):返回该整数对应的字符串。
# 1. 不可变
name = "悟空"
name = "孙悟空"
print(name) # 创建新字符串对象(孙悟空),替换变量存储的地址。
# 假设可以在原有基础上进行扩充,很可能破坏其他对象内存空间.
# 2. 编码相关函数
# 字 --> 数
print(ord("天"))
# 数 --> 字
print(chr(22825))
字面值
单引和双引号的区别
1. 单引号内的双引号不算结束符
2. 双引号内的单引号不算结束符
1. 双引号
name01 = “悟空”
# 单引号
name02 = ‘悟空’
三引号作用
1. 换行会自动转换为换行符\n
2. 三引号内可以包含单引号和双引号
3. 作为文档字符串
三引号(可见即所得)
name03 = ‘’‘悟空’’’
name04 = “”“悟空”""
message = ‘我叫"齐天大圣".’
message = “我叫’齐天大圣’.”
message = “”“我叫’齐"天大"圣’.”""
转义字符
1. 改变字符的原始含义。
\’ \” \””” \n \\ \t \0 空字符
2. 原始字符串:取消转义。
a = r”C:\newfile\test.py”
***2. 转义字符:改变字符的原始含义。***
***# \" \' \\***
message = "我叫\"齐天大圣\"."
url = "C:\\arogram Files\\bntel\cedia SDK"
***原始字符串:没有转义字符***
url = r"C:\arogram Files\bntel\cedia SDK"
print(url)
# \t 水平制表格
print("我爱\t编程.")
# \n 换行
print("我爱\n编程.")
字符串格式化
1. 定义:
生成一定格式的字符串。
2. 语法:
字符串%(变量)
"我的名字是%s,年龄是%s" % (name, age)
3. 类型码:
%s 字符串 %d整数 %f 浮点数
3. 字符串格式化
name = “qtx”
age = 18
score = 95.12345
print(“我的名字是%s,年龄是%d,成绩是%.3f” % (name, age, score))
通用操作
数学运算符
1. +:用于拼接两个容器
2. +=:用原容器与右侧容器拼接,并重新绑定变量
3. *:重复生成容器元素
4. *=:用原容器生成重复元素, 并重新绑定变量
5. < <= > >= == !=:依次比较两个容器中元素,一但不同则返回比较结果。
算数运算符
– +容器元素拼接
name01 = “悟空”
name01 += “八戒”
*– 容器元素重复多次
name02 = “唐僧”
name02 *= 2
print(name02)
– == !
依次比较两个容器中元素,一但不同则返回比较结果。
print(“悟空” > “八戒”)
成员运算符
1. 语法:
数据 in 序列
数据 not in 序列
2. 作用:
如果在指定的序列中找到值,返回bool类型。
2. 成员运算 in not in
print(“我爱” in “我爱你”) # true
print(“爱我” in “我爱你”) # flase
message = “我是齐天大圣.”
标题
索引index
1. 作用:定位单个容器元素
2. 语法:容器[整数]
3. 说明:
正向索引从0开始,第二个索引为1,最后一个为len(s)-1。
反向索引从-1开始,-1代表最后一个,-2代表倒数第二个,以此类推,第一个是-len(s)。
3. 索引:定位单个元素
print(message[1])
print(message[-2])
索引越界
print(message[7])# 报错 IndexError
print(message[-8])# 报错 IndexError
切片slice
1. 作用:
定位多个容器元素。
2. 语法:
容器[(开始索引):(结束索引)(:(步长))]
3. 说明:
小括号()括起的部分代表可省略
结束索引不包含该位置元素
步长是切片每次获取完当前元素后移动的偏移量
4. 切片:定位多个元素
range( , , )
[开始索引:结束索引:间隔] 不包含结束索引
print(message[0:4:1]) # 我是齐天
[:结束索引:]
print(message[:4:]) # 我是齐天
[:]
print(message[:]) # 我是齐天大圣.
message[::-1]
print(message[::-1]) # .圣大天齐是我
[开始索引::]
print(message[3::]) # 天大圣.
[::间隔]
print(message[::2]) # 我齐大.
切片不会越界
print(message[:100]) # 我是齐天大圣.
print(message[3:3]) # 获取空
print(message[1:-2]) # 是齐天大
print(message[1:5:-1]) # 获取空
列表:
定义
由一系列变量组成的可变序列容器。
基础操作
1. 创建列表:
列表名 = []
列表名 = list(可迭代对象)
1. 创建
– 直接存储数据
list01 = []
list01 = [“悟空”, “八戒”]
– 将其他可迭代对象存入列表
list02 = list(“我是齐天大圣”)
2. 添加元素:
列表名.append(元素)
列表.insert(索引,元素)
2. 增加
– 追加(末尾)
list01.append(“唐僧”)
– 插入(在指定)
list01.insert(1, “沙僧”)
3. 定位元素:
列表名[索引] = 元素
变量 = 列表名[索引]
变量 = 列表名[切片] # 赋值给变量的是切片所创建的新列表
列表名[切片] = 容器 # 右侧必须是可迭代对象,左侧切片没有创建新列表。遍历列表:
正向:
for 变量名 in 列表名:
变量名就是元素
反向:
for 索引名 in range(len(列表名)-1,-1,-1):
列表名[索引名]就是元素
3 查询
– 索引
print(list02[-1])
– 切片
原理:切片后返回新列表(拷贝)
print(list02[:])
– 循环
for item in list02:
print(item)
方法1:
需求倒序获取所有元素(不建议切片)
for item in list02[::-1]:
print(item)
方法2:
for index in range(len(list02)-1,-1,-1):
print(list02[index])
4. 删除元素:
列表名.remove(元素)
del 列表名[索引或切片]
34 删除
– 根据元素
if “八戒2” in list01:
list01.remove(“八戒2”) # 备注:如果没有元素则报错
– 根据位置
del list01[1]
del list01[1:3]
练习1:
"""
练习:
获取一个任意数 123456
输出每位相加和 1+2+3+4+5+6+.....
"""
number = input("输入任意数:")
# 1. 循环以前定义变量(存储累加和)
h = 0
for item in number:
# 循环以内进行累加
h += int(item)
# 循环以外获取
print(h)
练习2:
"""
练习1:在终端中显示0 1 2
练习2:在终端中显示6 7 8 9 10
练习3:在终端中显示2 4 6 8
练习4:在终端中显示9 8 7 6 5 4 3
练习5:在终端中显示-1 -2 -3 -4 -5 -6
"""
# 练习1:在终端中显示0 1 2
for __ in range(3):
print(__, end=" ")
print(" ")
# 练习2:在终端中显示6 7 8 9 10
for __ in range(6, 11):
print(__, end=" ")
print(" ")
# 练习3:在终端中显示2 4 6 8
for __ in range(2, 9, 2):
print(__, end=" ")
print(" ")
# 练习4:在终端中显示9 8 7 6 5 4 3
for __ in range(9, 2, -1):
print(__, end=" ")
print(" ")
# 练习5:在终端中显示-1 -2 -3 -4 -5 -6
for __ in range(-1, -7, -1):
print(__, end=" ")
print(" ")
练习3:
"""
随机加法考试题
程序产生两个随机数
获取(a+b=?)两个数相加结果
如果答对加10分,否则减5分,
总共3道题,最后打印分数。
"""
import random
result = 0
for __ in range(3):
number01 = random.randint(1, 10)
number02 = random.randint(1, 10)
print(str(number01) +"+"+ str(number02)+"=")
number = int(input("输入两数相加的和:"))
# if number == number01 + number02:
# result += 10
# else:
# result -= 5
result+=10 if number == number01 + number02 else -5
print("最后得分为:"+str(result))
练习4:
"""
随机加法考试题
程序产生两个随机数
获取(a+b=?)两个数相加结果
如果答对加10分,否则减5分,
总共3道题,最后打印分数。
"""
import random
result = 0
for __ in range(3):
number01 = random.randint(1, 10)
number02 = random.randint(1, 10)
print(str(number01) +"+"+ str(number02)+"=")
number = int(input("输入两数相加的和:"))
# if number == number01 + number02:
# result += 10
# else:
# result -= 5
result+=10 if number == number01 + number02 else -5
print("最后得分为:"+str(result))
练习5:
"""
练习1: 在终端中获取一个字符串,打印每个文字的编码值。
练习2: 在终端中循环录入编码值,打印每个文字,
要求:如果录入空字符串,则程序退出。
"""
# 练习1: 在终端中获取一个字符串,打印每个文字的编码值。
content = input("录入一个字符串:")
for item in content:
print(ord(item))
# 练习2: 在终端中循环录入编码值,打印每个文字,
# 要求:如果录入空字符串,则程序退出。
while True:
value = input("请输入编码值:")
if value == "":
break
print(chr(int(value)))
练习6:
# ?天?小时?分钟
minute = 1
hour = 2
day = 3
print("%d天%d小时%d分钟" % (day, hour, minute))
# ?斤零?两
aunit = 1
tael = 2
print("%d斤零%d两" % (aunit, tael))
# ?+?=?
number01 = 1
number02 = 2
print("%d+%d=%d" % (number01, number02,number01+number02))
练习7:
"""
练习:
“我是明教教主张无忌”
-- 打印第一个字符
-- 打印最后一个字符
-- 打印中间的字符
-- 打印前三个字符
-- 打印后四个字符(正向)
-- 打印:是教主无
-- 倒序打印所有字符
-- 尝试...
"""
message = "我是明教教主张无忌"
# 打印第一个字符
print(message[0])
# 打印最后一个字符
print(message[::-1])
# 打印中间的字符
print(message[len(message) // 2])
# 打印前三个字符
print(message[:3])
# 打印后四个字符(正向)
print(message[-4:])
# 打印:是教主无
print(message[1::2])
# 倒序打印所有字符
print(message[::-1])
练习 8:
"""
八大行星:
1. 创建列表存储行星:
"金星","地球","火星","木星","土星","天王星"
2. 在第一个位置插入 "水星"
3. 在末尾追加"海王星"
4. 打印从太阳到地球之间的行星(前两个行星)
5. 打印地球以后的行星(一行一个)
6. 倒序打印所有行星
"""
# 1. 创建列表存储行星:
# "金星","地球","火星","木星","土星","天王星"
list01=["金星","地球","火星","木星","土星","天王星"]
# 2. 在第一个位置插入 "水星"
list01.insert(0, "水星")
print(list01)
# 3. 在末尾追加"海王星"
list01.append("海王星")
print(list01)
# 4. 打印从太阳到地球之间的行星(前两个行星)
print(list01[:2])
# 5. 打印地球以后的行星(一行一个)
# for item in list01[3:]: # 拷贝了新列表
# print(item)
for i in range(3,len(list01)):
print(list01[i])
# 6. 倒序打印所有行星
for index in range(len(list01)-1,-1,-1):
print(list01[index])
语句小结:
循环语句:
while :根据条件重复执行(不知道次数)
例如:对折到超过珠穆朗玛则停止
for : 根据次数执行(循环计数)
例如:3道考试题/对折20次
跳转语句:
break:跳出(循环停止)
continue:跳过(循环继续)
备注:如果循环嵌套,跳转语句只对一层起作用.
range 属于可迭代对象,所以获取数据使用for.
看教程
网站: www.runoob.com