
本文将指导你如何在 Python 列表中搜索指定数值范围内的元素。通过修改现有的代码,允许用户输入一个数值范围,并在乘客年龄列表中查找符合条件的乘客。我们将提供详细的代码示例和解释,帮助你理解并应用这种技术。
在开发模拟巴士程序时,经常需要根据乘客的年龄范围进行搜索。例如,我们可能需要查找年龄在 55 到 67 岁之间的乘客。本文将介绍如何修改现有的 Python 代码,以实现根据用户输入的数值范围在列表中进行搜索的功能。
修改 find_age 函数
原有的 find_age 函数只能搜索特定年龄的乘客。我们需要对其进行修改,使其能够接受一个年龄范围作为输入,并查找符合该范围的乘客。
以下是修改后的 find_age 函数代码:
立即学习“Python免费学习笔记(深入)”;
def find_age():
try:
if Buss.antal_passagerare > 0:
clear()
print("Passagerarnas åldrar:")
print(Buss.passagerare) # Print out the ages of the passengers
startalder = float(input('Ålder 1: '))
slutalder = float(input('Ålder 2: '))
hitta = [i for i, age in enumerate(Buss.passagerare) if startalder <= age <= slutalder]
if hitta:
found_ages = [Buss.passagerare[i] for i in hitta]
print('Passagerare med ålder {0} hittades på position: {1}'.format(', '.join(map(str, found_ages)), ', '.join(map(str, hitta))))
else:
print('Inga passagerare med åldern mellan {0} och {1} hittades.'.format(startalder, slutalder))
input('Tryck Enter för att gå vidare')
else:
clear()
print('Inga passagerare att söka bland.')
input('Tryck Enter för att gå vidare')
except ValueError:
clear()
print('Felaktig inmatning. Försök igen.')
input('Tryck Enter för att gå tillbaka till menyn')代码解释:
-
输入年龄范围:
- startalder = float(input('Ålder 1: ')):提示用户输入起始年龄,并将其转换为浮点数。
- slutalder = float(input('Ålder 2: ')):提示用户输入结束年龄,并将其转换为浮点数。
-
列表推导式搜索:
- hitta = [i for i, age in enumerate(Buss.passagerare) if startalder
-
输出结果:
- if hitta::如果 hitta 列表不为空,表示找到了符合条件的乘客。
- found_ages = [Buss.passagerare[i] for i in hitta]:创建一个包含所有符合条件的年龄的列表。
- print('Passagerare med ålder {0} hittades på position: {1}'.format(', '.join(map(str, found_ages)), ', '.join(map(str, hitta)))):格式化输出找到的乘客的年龄和位置(索引)。,join(map(str, xxx))` 用于将列表转换为字符串。
- else::如果 hitta 列表为空,表示没有找到符合条件的乘客。
- print('Inga passagerare med åldern mellan {0} och {1} hittades.'.format(startalder, slutalder)):输出未找到乘客的信息。
-
错误处理:
- except ValueError::捕获 ValueError 异常,该异常在用户输入非数字时抛出。
- print('Felaktig inmatning. Försök igen.'):提示用户输入无效,并要求重新输入。
示例
假设 Buss.passagerare 列表包含以下年龄:[25, 30, 55, 60, 65, 70]。
如果用户输入 Ålder 1: 55 和 Ålder 2: 65,程序将输出:
Passagerare med ålder 55.0, 60.0, 65.0 hittades på position: 2, 3, 4
这表示年龄为 55, 60 和 65 的乘客分别位于列表的索引 2, 3 和 4。
注意事项
- 确保在调用 find_age 函数之前,Buss.passagerare 列表已经填充了乘客的年龄数据。
- 用户输入的是字符串,需要使用 float() 函数将其转换为浮点数,以便进行数值比较。
- 可以使用 int() 函数将用户输入转换为整数,如果年龄必须是整数。
- 代码中使用了 clear() 函数来清空屏幕,需要根据你的环境进行调整。
总结
通过修改 find_age 函数,我们成功实现了在 Python 列表中搜索指定数值范围的功能。该功能允许用户输入一个年龄范围,并在乘客年龄列表中查找符合条件的乘客。这在开发模拟巴士程序或其他需要根据数值范围进行搜索的应用程序中非常有用。通过本文提供的代码示例和解释,你可以轻松地将这种技术应用到自己的项目中。










