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