题目描述与分析
1.描述
题目描述:计算a+b,但输入方式有所改变。
输入描述:第一行是一个整数N,表示后面会有N行a和b,通过空格隔开。
输出描述:对于输入的每对a和b,你需要在相应的行输出a、b的和。
如第二对a和b,对应的和也输出在第二行。
2.分析
与问题1相比,多输入一个整数n来控制a,b的次数,既然是持续性输入,说明要在循环中输入n这个操作,需要上一节使用的while
连续输入n的代码如下:
while True:
try:
# 将输入的 N 转换成整数
N = int(input())
except:
break
一、列表
1.列表的定义
在Python中,列表(List)是一种非常灵活的数据结构,用于存储一系列有序的元素。列表中的元素可以是不同的数据类型(如整数、字符串、对象等),并且列表的大小(即其中元素的数量)是可以变化的。列表是可变的,这意味着你可以在创建列表之后添加、移除或更改其元素。
2.列表的创建和使用
创建一个列表很简单,你只需要把元素放在方括号[]中,用逗号分隔开。这里有一些基本的操作示例:
# 创建列表
my_list = [1, 2, 3, 'Python', [4, 5]]
# 访问列表元素
print(my_list[0]) # 输出第一个元素: 1
print(my_list[-1]) # 输出最后一个元素,即另一个列表: [4, 5]
# 修改列表元素
my_list[1] = 'changed'
print(my_list) # 输出: [1, 'changed', 3, 'Python', [4, 5]]
# 添加元素
my_list.append('new element')
print(my_list) # 输出: [1, 'changed', 3, 'Python', [4, 5], 'new element']
# 删除元素
del my_list[1]
print(my_list) # 输出: [1, 3, 'Python', [4, 5], 'new element']
二、for循环
当输入为n时,表示后面有n行 a 和 b 的输入,这也意味着循环只需要执行n次,在编程中可以使用for循环来解决这一问题。
在Python中,for 循环是一种常用的迭代结构,用于遍历序列(如列表、元组、字符串等)或其他可迭代对象(如字典、文件等)。使用 for 循环可以执行一组语句多次,每次迭代都更新循环变量的值。
1.基本语法
for 循环遍历一个列表中的元素,并执行循环中的代码块,其语法格式如下:
for item in list:
# 循环体
这里的list就是一个列表,而item是一个循环变量,表示每次循环时的值。
fruits = ['apple', 'banana', 'cherry']
for fruit in fruits:
print(fruit)
分析一下for遍历列表的流程:
遍历列表的第一个元素,此时fruit为"apple", 打印 fruit
遍历列表的第二个元素,此时fruit为"banana", 打印 fruit
…
遍历列表的最后一个元素,此时fruit为"cherry", 打印 fruit
循环结束
2.for循环遍历字符串
除了列表,for循环还能用来遍历字符串。
word = 'hello'
# 遍历字符串,letter表示字符串中的每一个字符
for letter in word:
print(letter)
range() 函数常与 for 循环结合使用,用于生成一个数值序列。
range()函数有以下三种用法:
range(stop)
range(start, stop)
range(start, stop, step)
range(stop): 传入一个数字,会生成 0 - stop(不包括 stop)的一系列数字,比如传入数字 5, 就会生成数字 0 ~ 4。
range(start, stop): 传入两个数字,start表示序列的起始值,默认从 0 开始,生成 start ~ stop(不包括stop)的一系列数字
range(start, stop, step): 传入三个数字,step表示步长,用于控制生成的整数之间的间隔,默认为1。
# 只指定 stop, 生成 0 - 4的数字
for i in range(5):
print(i)
# 指定start, stop, 生成 2 - 5的数字
for i in range(2, 6):
print(i)
# 指定起始值、终止值和步长, 生成 1 3 5 7 9
for i in range(1, 10, 2):
print(i)
因此,当已经获取整数 N 之后,想要让程序 执行 N 次,可以使用如下代码:
N = int(input())
# range(N)生成 0 - N-1之间的序列,共 N 个,循环执行N次
# _表示一个占位符,表示循环的迭代变量不会在循环内部使用。
for _ in range(N):
data = input().split()
res = int(data[0]) + int(data[1])
print(int(res)
获取列表值的过程可以使用多重赋值,经过简化后完整的代码如下:
while True:
try:
# 获取 输入的 n,将之转为整数
N = int(input())
# 使用 for range 循环迭代 n 次
for _ in range(N):
# 将输入拆分成列表字符串,赋值给变量 a , b
a,b = input().split()
# 将 a 和 b转换成整数后相加
print(int(a)+int(b))
except:
break
while循环重讲
既然能用for循环解决,那是不是也可以用while循环来解决?
如果想让while循环正常的运行,其格式如下:
# 初始化语句
while 条件判断:
# 迭代语句
while循环基础示例:
count = 0
while count < 5:
print(count)
count += 1 # 增加计数器,以避免无限循环
这个循环会打印数字0到4,然后结束。
使用 continue 跳过迭代:
continue 语句用于跳过当前循环的剩余部分,并返回循环的条件语句。
n = 0
while n < 5:
n += 1
if n == 3:
continue # 跳过数字3的打印
print(n)
这个循环会打印1、2、4和5。
带有 else 的 while 循环:
与 for 循环类似,while 循环也可以有一个可选的 else 部分,它在循环条件变为 False 时执行,但如果循环被 break 中断,则不执行。
n = 0
while n < 3:
print(n)
n += 1
else:
print("Loop is finished.")
这个循环会打印0、1、2,然后打印 “Loop is finished.”
一般来说,while循环都会包括初始化语句、条件判断、迭代语句这三个,那本道题目通过while进行改造的写法如下:
while True:
try:
N = int(input())
# 初始化一个值 0
i = 0
# 判断 i 是否 小于 N
while i < N:
a, b = input().split()
# 计算结果
print(int(a) + int(b))
# 将 i 的值累加 1
i = i + 1
except:
break
数据类型转换
在Python中, 数据类型转换可以分为两种:
隐式类型转换 - 由Python自动完成, 不需要我们去干预, 比如当整数和浮点数进行运算时,整数可以隐式转换为浮点数, 以方便执行浮点数运算。
result = 5 + 2.0 # 将整数 5 转换为浮点数 5.0,然后执行加法
此外在while(条件判断)循环中,条件判断通常是一个布尔值,即true表示真,false表示假,但是假设我们给定的是一个整数类型的值,编译器会帮助我们进行数据类型转换,将之转换成布尔值,如果整数的值为0,则条件的值为false, 其他非0的数都会转换成true。
num = 0
while num: # 当整数 num 被转换为布尔值时,0 被视为 False,循环退出
print(num)
显式类型转换 - 需要使用类型函数来转换
在显式类型转换中,用户将对象的数据类型转换为所需的数据类型。 我们使用 int()、float()、str()、bool() 等函数来执行显式类型转换。
x = int(1) # x 输出结果为 1
y = int(2.8) # 浮点数转为整数,会丢失精度,y 输出结果为 2
z = int("3") # z 输出结果为 3
x = float(1) # x 输出结果为 1.0
y = float(2.8) # y 输出结果为 2.8
z = float("3") # z 输出结果为 3.0
w = float("4.2") # w 输出结果为 4.2
x = str("s1") # x 输出结果为 's1'
y = str(2) # y 输出结果为 '2'
z = str(3.0) # z 输出结果为 '3.0'
扩展:sys模块
在Python中,sys 模块是一个内置的系统相关的功能模块,提供了访问与Python解释器紧密相关的变量和函数。这个模块是Python标准库的一部分,用于处理不同的操作系统环境,包括程序与Python解释器之间的交互。使用 sys 模块可以执行如读取命令行参数、获取系统信息、操作标准输入输出等任务。
sys.exit([status]): 退出程序。status 是一个整数,通常为 0 表示成功,非零表示错误。
sys.stdin: 标准输入流,用于从键盘或其他输入设备读取数据。
sys.stdout: 标准输出流,用于将数据打印到屏幕。
# 导入 sys 模块
import sys
# sys.stdin表示输入流,遍历获取的line表示每一行输入
for line in sys.stdin:
# 对每行数据进行处理