用python编写代码,输入一系列动物名和其重量,重量单位可能是kg,也可能是t,动物名、与重量间空格分隔, 重量数值与单位间无分隔。按重量由小到大排序以二维列表形式输出。 【输入形式】每次输入一个动物名,以及其重量和单位,动物名与重量间用空格分隔,输入-1时结束输入。 【输出形式】以二维列表形式输出,按重量由小到大升序排序。
时间: 2024-02-12 19:07:04 浏览: 122
可以使用以下代码实现:
```python
animals = []
while True:
animal = input().strip()
if animal == "-1":
break
name, weight = animal.split()
if weight.endswith("kg"):
weight = float(weight[:-2])
elif weight.endswith("t"):
weight = float(weight[:-1]) * 1000
animals.append((name, weight))
animals.sort(key=lambda x: x[1])
print(animals)
```
这段代码首先定义了一个列表 `animals` 用于存储动物和它们的重量。然后使用 `while` 循环不断输入动物和它们的重量,如果输入的动物名为 `-1`,则退出循环。在循环中,使用 `split()` 方法将动物名和重量分离,并判断重量的单位是 `kg` 还是 `t`,将其转换为公斤为单位的浮点数。最后将动物和重量以元组的形式添加到 `animals` 列表中。
完成输入后,使用 `sort()` 方法将 `animals` 列表按照重量从小到大排序。其中 `key` 参数指定了排序的关键字,这里使用了一个 lambda 函数,表示按照元组的第二个元素(即重量)进行排序。
最后输出 `animals` 列表即可。注意这里的输出并不是按照题目要求的二维列表形式,而是将列表中所有元素打印出来,每个元素表示为一个元组。如果需要按照二维列表形式输出,可以使用以下代码:
```python
animals = []
while True:
animal = input().strip()
if animal == "-1":
break
name, weight = animal.split()
if weight.endswith("kg"):
weight = float(weight[:-2])
elif weight.endswith("t"):
weight = float(weight[:-1]) * 1000
animals.append([name, weight])
animals.sort(key=lambda x: x[1])
print(animals)
```
这里将每个元素都改为了列表形式,最后输出的也是一个二维列表。
阅读全文