前言:本笔记仅仅只是对内容的整理和自行消化,并不是完整内容,如有侵权,联系立删。
一、利用已学知识解题
针对这个问题,我们同样是循环输入,但每一行都有 n+1 个数,我们利用循环结构已经可以完成以上程序过程。从本质上来说,其实就是一个累加的过程,还是比较好实现的。
# A+B 问题4
while True:
# total是累加值,初始为0
total = 0
# 输入一行数,将它们存储进数组lines中
lines = input().split()
# 第一个数n表示之后还有n个数
n = lines[0]
# 如果n为0,则结束循环
if n == 0:
break
# 利用for循环实现循环迭代n次
for count in range(1, n+1):
total += int(lines[count])
print(total)
二、使用sum函数对列表求和
上面我们完成了累加操作,但其实 Python 列表内置的有 sum ( ) 函数,可以遍历列表中的所有元素,并将它们相加计算列表中元素的总和。
# 练习使用sum函数
numbers = [1,2,3,4,5]
total = sum(numbers)
print(total) # 输出结果为15,也就是1+2+3+4+5=15
如果想要只累加列表中的部分元素,我们就要使用到列表的切片操作。创建切片,类似于 range()函数使用指定的第一个元素和最后一个元素的索引,同样是左闭右开。例如:
>>> vegetables = ['carrot','beans','potato','tomato']
>>> print(vegetables[0:3])
['carrots','beans','potato']
若是想从第一个元素开始切片,可以不指定起始索引,例如:
>>> vegetables = ['carrot','beans','potato','tomato']
>>> print(vegetables[0:3])
['carrots','beans','potato']
要想让切片终止与末尾,也可类似的语法,省略结束索引,这样即使是负数也可以输出到列表末尾的所有元素。例如:
>>> vegetables = ['carrot','beans','potato','tomato']
>>> print(vegetables[1:])
['beans','potato','tomato']
>>> print(vegetables[-2:])
['potato','tomato']
接上一节,如果想要遍历部分列表,也需要使用切片,例如:
vegetables = ['carrot','beans','potato','tomato']
for vege in vegetables[0:1]:
print(vege)
# 输出结果为 carrot
而如果想要复制整个列表,可以同时省略起始索引和终止索引,例如:
>>> vegetables = ['carrot','beans','potato','tomato']
>>> print(vegetables[:])
['carrots','beans','potato','tomato']
但是,在本题中列表中的元素还都是字符串形式,有没有什么办法可以将所有字符串一次性全部转换为整数形式或是浮点数形式呢?这可以使用内置的 map ( ) 函数,它也常用于 Python 中的列表操作,可以将一个函数应用到序列的每个元素,并返回一个包含结果的新序列。
# A+B 问题4
while True:
# 输入一行数,将它们存储进数组lines中并将所有元素转化为整数
# 使用list函数将map转换成的序列存储成一个列表形式
lines = list(map(int,input().split()))
# 第一个数n表示之后还有n个数
n = lines[0]
# 如果n为0,则结束循环
if n == 0:
break
# 使用sum函数,但要注意使用切片操作因为列表中的第一个不需要累加
total = sum(lines[1:])
print(total)
三、算术运算符和赋值运算符
1、算术运算符
算术运算符顾名思义是用来运算的,我们常见的有 +、-、*、/、**、//,它们的含义分别为:加法、减法、乘法、除法、取模、幂运算和整除。
2、赋值运算符
赋值运算符实质上就是为了简洁而发明的运算方式。我们通常都使用 sum += i 的形式来书写代码,而且这种形式也常常用于其他算数运算符,比如:-=、*=、/=、%=。
四、学会使用数学库
Python中内置了一些常用的数学函数,你可以使用这些函数进行一些常见的数学运算。
# 一些常用数学运算
abs(x) # 返回数字的绝对值
max(x1,x2,x3,...) # 返回这组数据的最大值
min(x1,x2,x3,...) # 返回这组数据的最小值
pow(x,y) # 返回x的y次方,x和y必须为整数
round(x) # 返回浮点数x的四舍六入五成双
Tip:在 Python 中,不是数学中常见的四舍五入,而是四舍六入五成双,意思是round (3,4) 返回值为 3;round (3.6) 返回值为4;round (4.5) 返回值为4 而不是 5,因为4为双数。
但是更多的数学运算,需要导入 math 模块才能使用。
# 导入数学库
import math
math.ceil(x) # 返回一个大于或等于x的最小整数
math.floor(x) # 向下取整,返回一个比x小的最大整数
math.pow(x,y) # 返回 x 的 y 次方, math模块会把参数转换成浮点数
math.sqrt(x) # 返回 x 的平方根
有些时候,我们可能想要生成一个随机数,那么就可以导入 random 模块。
# 导入 random 模块
import random
# 生成一个随机数,位于区间 [0, 1) 之间
random.random()
# 随机打乱一个序列
a=[1,2,3,4,5,6]
random.shuffle(a)
# 生成一个随机数,位于区间 [m, n) 之间
random.uniform(m,n)
# 生成一个随机整数,位于区间 [m, n) 之间
random.randint(m,n)