python - 如何在平方和 python 程序中解决此错误以在列表中查找第二大数?
问题描述
def get_second_largest(num):
largest = num[0]
second_largest = num[0]
while i < len(num) :
if num[i] > largest:
second_largest = largest
largest = num[i]
elif num[i] > second_largest:
second_largest = nums[i]
return second_largest
i = int(input("Enter Numbers "))
list_1 = list(i.split(" ,"))
second_largest = get_second_largest(list_1)
print("Second largest number is :", second_largest)
我得到了什么
Enter Numbers 5 10
Traceback (most recent call last):
File "C:\Users\user\Desktop\Python through atom\Find_The_Second_Largest_Num.py", line 15, in <module>
second_largest = get_second_largest(list_1)
File "C:\Users\user\Desktop\Python through atom\Find_The_Second_Largest_Num.py", line 4, in get_second_largest
while i < len(num) :
TypeError: '<' not supported between instances of 'str' and 'int'
解决方案
当您使用 Python 内置函数读取某些输入时,它会将输入转换为字符串(去除尾随换行符)并返回。官方文档
>>> i = input("-->")
-->1 ,2 , 4 ,8
>>> i
'1 ,2 , 4 ,8'
>>> i.split(" ,")
['1', '2', ' 4', '8']
string
在拆分时执行从to 的显式转换int
将解决您的错误。
>>> l = [int(n) for n in i.split(" ,")]
>>> l
[1, 2, 4, 8]
还有几点需要指出:
int(input("Enter Input"))
抛出 ValueError 因为如doc中所述,输入函数返回一个字符串。list(i.split(" ,"))
默认情况下str.split()返回单词列表。所以不需要显式转换为列表。- 实现您的目标(即找到第二大数字)的更 Pythonic 方法是利用sort() / sorted()内置函数以及列表索引。(正如@mohideen-bin-mohammed 所建议的那样)
推荐阅读
- angular - Angular Universal 平台服务器最初不显示某些组件 css 样式
- android-studio - 无法使用自定义图像在 Android Studio 上创建通知图标
- android - 如何从 mysql 数据库中检索数据到颤振应用程序?
- bash - 每次在 bash 终端中输入任何命令时,如何执行脚本?
- javascript - iOS:Polyfill NFC Web API——有可能吗?
- swift - 如何在 SwiftUI 中将颜色选择器值保存到 UserDefaults 中?
- cuba-platform - Cuba-Platform: sample-user-registration-master HSQLDB 连接错误: OutOfMemoryError: Java heap space
- pandas - 使用 Python Pycharm 安装 Flask 不专业
- python - DHT22 在 Pi Zero W 上以用户身份工作,但不以 Sudo 身份工作
- python - 在 Python 中计算同一 DataFrame 中的分类变量之间的重叠