Python-用户输入的第二小数字

时间:2019-11-06 23:24:56

标签: python

我找到了一个YouTube video,其中包含一个程序,用于查找列表中第二小的数字。我正在尝试修改此代码,以便与用户输入一起使用。这是视频中的代码:

numbers = [ 6, 6, 6, 4, 3, 4, 5 ]

print(f"Number: {numbers}")

first = 10000 
second = 10000

for number in numbers:
    if number < first:
        second = first
        first = number
    elif number > first and number < second:
        second = number

print(f"First:  {first}")
print(f"Second: {second}")

这是我到目前为止的内容,但输出始终为99,我不知道该如何解决。 (我使用python 2.7)

list = str(raw_input())

first = 99
second = 99

for number in list:
    if number < first:
        second = first
        first = number
    elif first < number < second:
        second = number

print "The second smallest number is : %d" % second

我知道有关此主题的问题已经存在,但是它们都可以与函数一起使用,我还不知道如何使用它们。

2 个答案:

答案 0 :(得分:3)

str()raw_input()返回字符串,而不是列表。如果要获取用户键入的单词的列表,则需要使用split()。然后,您需要使用int()将它们转换为整数。

此外,您不应使用list作为变量名,因为它是内置函数的名称。

number_list = map(int, raw_input().split())
for number in number_list:
    ...

答案 1 :(得分:0)

问题在于raw_input()返回的是字符串,而不是列表。因此,您需要将字符串分成多个部分(每个部分都是数字之一),以便从输入中获取列表。

假设您输入的内容采用以下格式(即用逗号分隔的数字):

input = '1,2,3,4,5,6'

您可以使用逗号分隔该字符串以获取如下列表:

input_list_strings = input.split(',')
#input_list_strings = ['1', '2', '3', '4', '5', '6']

然后您需要将字符列表转换为整数

input_list = [int(string) for string in input_list_strings]
#input_list = [1, 2, 3, 4, 5, 6]

您可以使用以下命令在一行中完成所有操作:

input_list = [int(string) for string in input.split(',')]

那么您应该能够正常继续算法。

括号中的内容称为列表理解,通常认为使用列表理解比使用map更具Python风格,因为它更具可读性。您可以阅读关于它们的here