元组的统计
Problem Description
编写程序,求一个元祖中元素个数、最大值、最小值、元素之和、平均值.
Input Description
在一行中输入数字,以英文逗号分隔
Output Description
输出该元祖及元祖中元素个数、最大值、最小值、元素之和、平均值(保留2位小数).
Sample Input
9,7,8,3,2,1,55,6
Sample Output
(9, 7, 8, 3, 2, 1, 55, 6) length=8,max=55,min=1,sum=91,average=11.38
代码如下:
# 从用户那里获取逗号分隔的字符串输入,并转换成整数类型的元组
yuan = tuple(map(int, input().split(',')))
# 打印输入的元组
print(yuan)
# 打印元组的长度
print("length=%d" % (len(yuan)), end=',')
# 找出元组中的最大值并打印
print("max=%d" % max(yuan), end=',')
# 找出元组中的最小值并打印
print("min=%d" % min(yuan), end=',')
# 计算元组中所有元素的和并打印
print("sum=%d" % sum(yuan), end=',')
# 计算元组的平均数
average = sum(yuan) / len(yuan)
# 打印平均数,保留两位小数
print("average=%.2f" % average)
代码解释:
input().split(',')
:从用户那里获取一行输入,并使用逗号,
作为分隔符将字符串分割成一个列表。map(int, ...)
:使用map
函数将分割后列表中的每个元素转换成整数类型。tuple(...)
:将转换后的整数列表转换成元组。print(yuan)
:打印输入的元组。print("length=%d" % (len(yuan)), end=',')
:计算并打印元组的长度,end=','
表示打印后不换行,而是添加逗号。print("max=%d" % max(yuan), end=',')
:找出并打印元组中的最大值。print("min=%d" % min(yuan), end=',')
:找出并打印元组中的最小值。print("sum=%d" % sum(yuan), end=',')
:计算并打印元组中所有元素的和。average = sum(yuan) / len(yuan)
:计算元组的平均数。print("average=%.2f" % average)
:打印平均数,%.2f
表示保留两位小数。
注意:代码使用了%
格式化字符串的语法,这是Python 2.x中常见的字符串格式化方式。在Python 3.x中,更推荐使用str.format()
方法或f-string(格式化字符串字面量)来进行字符串格式化。
如果希望使用更现代、更易读的格式化方式,可以将上述print
语句中的格式化部分替换为str.format()
或f-string,如下所示(以f-string为例):
print(f"length={len(yuan)},")
print(f"max={max(yuan)},")
print(f"min={min(yuan)},")
print(f"sum={sum(yuan)},")
print(f"average={average:.2f}")
这种方式更直观且易于维护。
元组的相关基础知识
在Python中,元组(Tuple)是一个不可变序列类型,通常用于存储一组相关的值。以下是关于元组的一些基本知识和常见操作:
1. 创建元组
- 元组可以使用圆括号
()
来创建,元素之间用逗号,
分隔。 - 如果只有一个元素,需要在该元素后面加上一个逗号
,
,否则它会被视为一个括号表达式而非元组。
示例:
python复制代码
# 创建一个包含多个元素的元组 | |
my_tuple = (1, 2, 3, 4) | |
# 创建一个只包含一个元素的元组 | |
single_element_tuple = (5,) # 注意逗号 |
2. 访问元组元素
- 使用索引来访问元组中的元素,索引从0开始。
- 可以使用切片来获取元组的一个子序列。
示例:
python复制代码
# 访问元组中的元素 | |
print(my_tuple[0]) # 输出: 1 | |
# 使用切片获取子序列 | |
sub_tuple = my_tuple[1:3] # 输出: (2, 3) |
3. 元组是不可变的
- 一旦创建,元组中的元素不能被修改。
- 如果尝试修改元组中的元素,Python会抛出TypeError异常。
示例:
python复制代码
# 尝试修改元组中的元素(这是不允许的) | |
my_tuple[0] = 10 # TypeError: 'tuple' object does not support item assignment |
4. 元组常用操作
len(tuple)
: 获取元组的长度。tuple.count(value)
: 返回元组中某个值出现的次数。tuple.index(value)
: 返回元组中某个值第一次出现的索引,如果值不存在则抛出ValueError。
示例:
python复制代码
# 获取元组长度 | |
length = len(my_tuple) # 输出: 4 | |
# 计算元素出现的次数 | |
count = my_tuple.count(3) # 输出: 1 | |
# 获取元素的索引 | |
index = my_tuple.index(2) # 输出: 1 |
5. 元组的解包
- 可以将元组中的元素解包到变量中。
示例:
python复制代码
a, b, c, d = my_tuple # 解包元组到变量a, b, c, d中 |
6. 元组与列表的转换
- 可以使用
list()
函数将元组转换为列表,列表是可变的。 - 可以使用
tuple()
函数将列表转换为元组。
示例:
python复制代码
# 元组转列表 | |
list_from_tuple = list(my_tuple) | |
# 列表转元组 | |
tuple_from_list = tuple([5, 6, 7]) |
7. 元组的应用场景
- 当需要存储一组不可变的、相关的值时,可以使用元组。
- 元组通常用于表示点的坐标、函数的多个返回值等。
- 由于元组是不可变的,所以它们可以用作字典的键或集合的元素。
8. 命名元组(NamedTuples)
collections.namedtuple
可以用来创建一个具有字段名的元组子类。- 命名元组提供了更具描述性的方式来表示元组中的数据。
示例:
python复制代码
from collections import namedtuple | |
# 创建一个命名元组类型 | |
Point = namedtuple('Point', ['x', 'y']) | |
# 创建命名元组实例 | |
p = Point(1, 2) | |
print(p.x) # 输出: 1 | |
print(p.y) # 输出: 2 |
元组因其不可变性而在许多情况下都很有用,特别是在需要保证数据不被意外修改时。
以上是Python中元组的基本知识和常见操作。