输入一系列动物名和其重量,重量单位可能是kg(千克),也可能是t(吨),动物名和重量之间用空格分隔,重量数值与单位间无分隔,最后一行输入:over表示输入结束。按重量从小到大排序并以二维列表形式输出。 输入样例: 海豚 228kg 北极熊 0.75t 企鹅 35kg 海豹 0.35t 白鲸 1.35t over 输出样例: [['企鹅', '35kg'], ['海豚', '228kg'], ['海豹', '0.35t'], ['北极熊', '0.75t'], ['白鲸', '1.35t']],请帮我写出满分python代码答案
时间: 2023-12-24 08:02:38 浏览: 143
以下是满分Python代码:
```python
animals = []
while True:
animal = input()
if animal == 'over':
break
animals.append(animal.split())
animals.sort(key=lambda x: float(x[1][:-1]) if x[1][-1] == 't' else float(x[1][:-2])/1000)
print(animals)
```
解析:
1. 首先定义一个空列表 `animals`,用来存储输入的动物信息。
2. 使用 `while` 循环不断输入动物信息,直到输入 `over` 为止。每次输入的动物信息用空格分隔后存储到 `animals` 列表中。
3. 使用 `sort` 方法对 `animals` 列表进行排序。排序的 key 函数使用了 lambda 表达式,根据动物重量进行排序。如果重量单位是 t(吨),则将字符串最后一个字符(即 t)去掉并转换为浮点数,否则将字符串最后两个字符(即 kg)去掉并转换为浮点数再除以 1000。
4. 最后输出排序后的 `animals` 列表。
相关问题
写一个python代码:1.输入一系列动物名和其重量,重量单位可能是kg(千克),也可能是t(吨),动物名与重量间用空格分隔,重量数值与单位间无分隔。按重量由小到大排序并以二维列表形式输出。
好的,以下是实现该功能的 Python 代码:
```python
animals = input("请输入动物名和其重量,格式为“动物名 重量”(重量单位可能是kg或t),以空格分隔,多个动物用逗号隔开:")
animal_list = animals.split(",")
animal_weight = []
for animal in animal_list:
name, weight = animal.split()
if weight[-1] == "t":
weight = float(weight[:-1]) * 1000
else:
weight = float(weight)
animal_weight.append([name, weight])
animal_weight.sort(key=lambda x: x[1])
print(animal_weight)
```
该代码首先接受用户输入的动物名和重量,然后通过逗号分隔将其转换为动物列表。接着,对于每个动物,我们从其名称和重量字符串中提取名称和重量,并根据其单位将重量转换为千克。最后,我们将每个动物的名称和重量存储在一个二维列表中,并按重量排序。最终,我们以二维列表形式输出排序后的动物名和重量。
输入一系列动物名和其重量,重量单位可能是kg(千克),也可能是t(吨),动物名和重量之间用空格分隔,重量数值与单位间无分隔,最后一行输入:over表示输入结束。按重量从小到大排序并以二维列表形式输出。
好的,我可以帮你解决这个问题。以下是 Python 代码实现:
```python
animals = []
while True:
animal = input().strip()
if animal == 'over':
break
name, weight = animal.split()
if weight.endswith('t'):
weight = float(weight[:-1]) * 1000
else:
weight = float(weight)
animals.append([name, weight])
animals.sort(key=lambda x: x[1])
print(animals)
```
代码思路解析:
1. 首先创建一个空列表 `animals`,用于存储输入的动物和重量信息;
2. 使用 `while` 循环,从标准输入读取用户输入的动物和重量信息;
3. 当读取到输入结束符号 `over` 时,跳出循环;
4. 对于每一行输入,使用 `split()` 方法将动物名和重量分离,并进行单位转换(如果是吨则转换为千克);
5. 将动物名和转换后的重量存储为一个列表,并将该列表添加到 `animals` 列表中;
6. 使用 `sort()` 方法对 `animals` 列表按照重量从小到大排序;
7. 最后将排序后的 `animals` 列表以二维列表的形式输出。
希望这个代码能够帮助到你,如果有任何疑问,请随时问我。