卡码网Python基础课(A+B问题4)


题目描述与分析

1.描述

题目描述:你的任务是计算若干整数的和。

输入描述:每行的第一个数N,表示本行后面有N个数。
如果N=0时,表示输入结束,且这一行不要计算。

输出描述:对于每一行数据需要在相应的行输出和。

2.分析

计算若干整数的和,根据前几节内容可以先把输入写出来:

while True:
      # 将输入的每行数据分割成列表
    input_line = input().split()  

将n转换成整数,如果n=0,表示输入结束,应当退出程序

# input_line[0]表示是第一个整数,通过int()将之转换成整数
n = int(input_line[0])
# 如果 n == 0, 退出循环
if n == 0:
    break

合起来就是:

while True:
    input_line = input().split()
    n = int(input_line[0])
    if n == 0:
        break  # 退出循环

然后要做的就是把后面几个数累加了,先定义一个变量total,用于计算最后的结果,再进行n次循环,把把列表中的每一个元素累加到total上即可,代码如下:

total = 0 # 提前定义一个变量total, 用于计算后面 n 个数字的总和
# 执行 n 次循环
for i in range(n):
      # 累加操作

进行累加时,i 从 0 遍历到 n - 1, 共执行 n 次,不过我们需要累加的是第 1个元素到第 n个元素(第0个元素是 n), 所以需要对 i 进 + 1操作

# 将 total 和 input_line[i + 1]进行累加(转为int类型后),重新赋值给 total 
total = total + int(input_line[i + 1])

最后将结果打印输出即可, 完整的代码如下:

while True:
    input_line = input().split()
    n = int(input_line[0])
    if n == 0:
        break
    total = 0
    for i in range(n):
        total = total + int(input_line[i + 1])
    print(total)

一、算术运算符

在Python中,算术运算符用于执行常见的数学运算,这些运算符对处理数值类型的数据尤其重要。常用的算术运算符有+、-、*、/、**、//,含义分别是加法、减法、乘法、除法、取模、幂运算和整除。

a = 10 - 5  # 减法运算,将10减去5,结果为5
a = 10 + 5	# 加法运算,将10和5相加,结果为15
a = 5 * 5		# 乘法运算,将5和5相乘,结果为25
a = 10 / 5	# 除法运算,将10除以5,结果为2.0,Python3中,除法总是返回浮点数,即便结果是整数
a = 5 // 2 	# 整数除法运算,将5除以2,结果为2(只保留整数部分)
a = 2 ** 2	# 幂运算,2的2次方,即2^2,结果为4
a = 10 % 4  # 取余数运算,将10除以4,返回余数,即2

特点和注意事项

1.运算优先级:和数学中的规则相同,Python中的算术运算符也有优先级顺序。例如,** 的优先级高于 * 和 /,而 * 和 / 的优先级又高于 + 和 -。可以使用括号 () 来改变运算的顺序。

2.字符串和列表操作:虽然本讨论集中在数值上,但值得注意的是,加法 (+) 和乘法 (*) 运算符也可以用于字符串和列表。例如,使用 + 可以连接字符串或列表,使用 * 可以重复字符串或列表。

二、赋值运算符

基本赋值运算符:我们之前学的’='就是基本赋值运算符,用于将右边表达式的值赋给左边的变量。

复合赋值运算符:复合赋值运算符将算术运算与赋值合并在一起,比如对某个值进行运算后,再把计算的结果赋给这个值,可以表示为total = total + a, 将 total 的值和 a 进行运算后,再赋值给 total , 此时我们可以使用复合赋值运算符+=

total = 0
for i in range(1, 11):
    total += i  # 与 total = total + i 等价

我们通常都使用sum += i的形式来书写代码,而且这种形式也常常用于其他算数运算符,比如-=、*=、/=、%=

a += 5  # 相当于 a = a + 5 
a -= 5 	# 相当于 a = a - 5 
a *= 5 	# 相当于 a = a * 5 
a **= 5 # 相当于 a = a ** 5 
a /= 5 	# 相当于 a = a / 5 
a //= 5 # 相当于 a = a // 5 
a %= 5 	# 相当于 a = a % 5 

三.内置函数sum

在Python中,sum() 是一个非常实用的内置函数,用于计算输入的可迭代对象(如列表、元组等)中所有元素的总和。这个函数对于进行快速的数值计算非常方便。

sum() 函数的基本语法是:

sum(iterable, start=0)

iterable:这是一个包含数值的可迭代对象,如列表、元组等。
start:这是一个可选参数,表示总和的初始值,默认为0。你可以指定一个不同的初始值来开始累加计算。
比如下面这个例子:

numbers = [1, 2, 3, 4, 5]
total = sum(numbers)
print(total)  # 输出 15,因为 1 + 2 + 3 + 4 + 5 = 15

这里存在一个问题,sum() 期望 iterable 中的元素都是数值类型(整数或浮点数)。如果 iterable 包含字符串类型的元素,可以使用内置函数map().在Python中,map() 是一个内置函数将指定的函数应用于给定可迭代对象(如列表、元组等)的每个元素,并返回一个包含结果的迭代器。这使得 map() 在进行批量数据转换或计算时非常有用。

map()一般语法如下:

map(function, iterable, ...)

function:这是一个函数,将作为第一个参数传递给 map(),应用于 iterable 的每个元素。
iterable:一个或多个可迭代对象。如果提供了多个可迭代对象,function 必须能接受相应数量的参数,每个可迭代对象的元素将作为一个参数传递给函数。
比如下面这个例子:

string_numbers = ["1", "2", "3", "4", "5"]

# 使用 map(int, list) 将列表中的所有字符串元素全都转换成整数
# 再在外面加一层list(), 使用list()方法将map的返回结果转为列表
int_numbers = list(map(int, string_numbers))

print(int_numbers)
numbers = map(int, input_line[1:])

这里的input_line[1:]是一个切片操作,表示从列表中获取从指定索引(包括该索引)到序列末尾的所有元素, 然后对这些元素都执行int函数转换,将之转换成整数,并最终返回一个新的列表。

完整代码如下:

while True:
    input_line = input().split()
    n = int(input_line[0])
    if n == 0:
        break
    # input_line[1:]是一个切片操作,表示从列表中获取从指定索引(包括该索引)到序列末尾的所有元素
    # [1:]表示的为获取从索引1到末尾的所有元素,即列表的第二个元素开始,直到最后
    numbers = list(map(int, input_line[1:]))
    total = sum(numbers)
    print(total)

四、常用的数学运算

Python中内置了一些常用的数学函数,你可以使用这些函数进行一些常见的数学运算。

abs(x): 返回数字的绝对值
max(x, y, z, …): 返回一组数据中的最大值
min(x, y, z, …): 返回一组数据中的最小值
pow(x, y): 返回 x 的 y 次方,参数为整数
round(x):返回浮点数 x 的四舍五入值

print(abs(-10)) # 返回 -10的绝对值 10
print(max(1,2,3)) # 返回 3 
print(min(1,2,3)) # 返回 1
print(pow(10, 2)) # 1

但是更多的数学运算,需要导入math模块才能使用

math.ceil(x): 返回一个大于或等于 x 的最小整数。
math.floor(x): 向下取整,返回一个比 x 小的最大整数。
math.pow(x, y): 返回 x 的 y 次方, math模块会把参数转换成浮点数。
math.sqrt(x): 返回 x 的平方根

import math
print(math.ceil(3.14))   # 4
print(math.floor(-9.99)) #  -10
print(math.pow(10, 2)) # 100.0
print(math.sqrt(100)) # 10.0

想要生成一个随机数,可以导入random模块

import random
# 生成一个随机数,位于 区间 [0, 1) 之间
random.random() 
  • 38
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值