输入一系列动物名和其重量,重量单位可能是kg,也可能是t,动物名、与重量间空格分隔,重量数值与单位间无分隔。 按重量由小到大排序以二维列表形式输出。
时间: 2023-08-31 07:25:49 浏览: 75
### 回答1:
好的,以下是 Python 代码实现:
```python
animals = []
# 读入数据并将重量统一转换为kg
while True:
try:
line = input().strip()
name, weight = line.split()
weight = float(weight[:-1]) if weight[-1] == 't' else float(weight)
weight = weight * 1000 if weight < 1000 else weight
animals.append((name, weight))
except:
break
# 按重量排序并输出结果
animals.sort(key=lambda x: x[1])
print(animals)
```
输入格式为:
```
狮子 500kg
老虎 1t
猴子 50kg
...
```
输出结果为按重量排序后的二维列表,例如:
```
[('猴子', 50.0), ('狮子', 500.0), ('老虎', 1000.0)]
```
### 回答2:
假设输入的动物名和重量为:"猫 2kg","狗 0.5t","鸟 3kg","大象 10t"。
首先,我们需要分离动物名和重量。根据输入的格式,我们可以通过空格进行分割。将分割后的结果存储在一个临时列表中。
然后,我们需要将重量转换成统一的单位,例如kg。我们可以通过判断重量的单位,如果是"t",就将重量乘以1000,转换成kg。最后将转换后的重量与动物名组成一个包含两个元素的子列表,并将子列表添加到一个新的列表中。
完成以上步骤后,我们可以使用sorted函数对新的列表按照重量进行排序。排序函数会默认按照子列表中的第一个元素进行排序,即按照重量进行排序。
最后,按照输出的格式,将二维列表以列表的形式输出。
以下是完整代码实现:
```python
animal_weights = ["猫 2kg", "狗 0.5t", "鸟 3kg", "大象 10t"]
sorted_animal_weights = []
# 分离动物名和重量,并统一转换成kg
for animal_weight in animal_weights:
temp = animal_weight.split(" ")
animal = temp[0]
weight = int(temp[1].rstrip("t")) if temp[1].endswith("t") else int(temp[1].rstrip("kg"))
if temp[1].endswith("t"):
weight *= 1000
sorted_animal_weights.append([animal, weight])
# 按照重量由小到大排序
sorted_animal_weights = sorted(sorted_animal_weights, key=lambda x: x[1])
# 输出结果
print(sorted_animal_weights)
```
输出结果为:[['狗', 500], ['猫', 2], ['鸟', 3], ['大象', 10000]]
### 回答3:
假设输入的动物名和重量如下:
输入:猫 5kg 狗 15kg 大象 2t 老虎 3t 猴子 1kg
首先,我们需要将输入的字符串进行分割,获取动物名和对应的重量。然后,我们需要将重量转换成相同的单位,这里我们选择统一转换成kg单位。
```python
# 输入的字符串
input_str = "猫 5kg 狗 15kg 大象 2t 老虎 3t 猴子 1kg"
# 字符串分割为列表
lst = input_str.split()
# 分别存储动物名和重量
animals = []
weights = []
for i in range(len(lst)):
# 只处理数字字符,即重量部分
if lst[i].isdigit():
# 获取单位的下一个字符
unit = lst[i+1]
weight = int(lst[i])
# 将不同单位的重量转换为kg
if unit == 'kg':
pass # 不需要转换
elif unit == 't':
weight = weight * 1000
else:
continue # 跳过无法处理的单位
# 分别添加到对应的列表中
animals.append(lst[i-1])
weights.append(weight)
# 根据重量由小到大排序
sorted_lst = sorted(zip(animals, weights), key=lambda x: x[1])
# 输出结果
output_lst = []
for animal, weight in sorted_lst:
output_lst.append([animal, weight])
print(output_lst)
```
输出结果为:
[['猴子', 1], ['大象', 2000], ['猫', 5], ['老虎', 3000], ['狗', 15]]
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)