python - 在数组中查找第二大项未按预期工作
问题描述
我的查找第二小的数字的程序按预期工作,但是在运行代码以查找第二大的数字时,第二大的输出不正确。我以类似的方式完成了第二个功能,但翻转了大于号。修复代码的最佳方法是什么?
def second_smallest():
num_list = [1,5,6,44,5,7,2,444,3]
smallest_num = num_list[0]
second_smallest_num = num_list[1]
for i in num_list:
if i < smallest_num:
smallest_num = i
elif smallest_num < i < second_smallest_num:
second_smallest_num = i
print("Smallest Number:", smallest_num)
print("Second smallest number:", second_smallest_num)
def second_largest():
num_list = [1,5,6,44,5,7,2,444,3]
largest_num = num_list[0]
second_largest_num = num_list[1]
for i in num_list:
if i > largest_num:
largest_num = i
elif second_largest_num < i < largest_num:
second_largest_num = i
print("Largest:", largest_num)
print("Second largest:", second_largest_num)
解决方案
当您分配新的最高号码时,您需要将第二高的号码分配给旧的最高号码。
def second_smallest():
num_list = [1,5,6,44,5,7,2,444,3]
smallest_num = num_list[0]
second_smallest_num = num_list[1]
for i in num_list:
if i < smallest_num:
smallest_num = i
elif smallest_num < i < second_smallest_num:
second_smallest_num = i
print("Smallest Number:", smallest_num)
print("Second smallest number:", second_smallest_num)
def second_largest():
num_list = [1,5,6,44,5,7,2,444,3]
largest_num = num_list[0]
second_largest_num = num_list[1]
for i in num_list:
if i > largest_num:
second_largest_num = largest_num
largest_num = i
elif second_largest_num < i < largest_num:
second_largest_num = i
print("Largest:", largest_num)
print("Second largest:", second_largest_num)
second_smallest()
second_largest()
推荐阅读
- tensorflow - tensorflow如何知道哪部分数据分配给了哪个子数据集?
- google-cloud-platform - 向 GCP 云函数内的 rabbit mq 代理主题发送消息
- html - 有没有办法在不影响可访问性的情况下将导航菜单的打开/关闭按钮放在 nav 元素之外?
- c# - ASP.net 应用程序中的 Security.System.Exception
- python - 美丽的汤:无法提取整个 unicode 文本
- git - 在本地网络上共享 Visual Studio 2019 存储库
- java - 通过简单的请求/响应正确使用 openapi 鉴别器
- javascript - DiscordJS 获取超过 100 条消息
- sql - 使用 OR 连接的 SQL 语句的查询表达式中的运行时错误“3075”
- python - 两个函数之一不写入文件