用户输入以降序排列输出

时间:2019-02-01 06:52:10

标签: python

用户输入,其中输出将按降序排序。

例如,输入数字:

您要输入更多内容吗?

如果是,请输入其他号码

如果回答否

中断参数并按降序对输出进行排序。

我使用raw_input来查询和获取while循环来运行代码。但它只按降序对第一个输出和最后一个输出进行排序

a = raw_input("Enter a number: ")
while True:
    b = raw_input("Do you want to input more: ")
    c = raw_input("Enter another number:")
    if b == 'yes':
        print (c)
        continue
    elif b == 'no':
        my_list = [a,c]
        my_list.sort(reverse=True)
        print(my_list)
        break

我希望代码能够成功运行

Enter a number:2
Do you want to input more:yes
Enter another number:3
Do you want to input more:yes
Enter another number:4
Do you want to input more:no
[4,3,2]

5 个答案:

答案 0 :(得分:2)

Python 3.x 中,使用input()代替raw_input()

创建一个list以便将用户输入追加到其中,以便稍后对其进行排序。

input_List = []
input_List.append(int(input("Enter a number: ")))

while True:
    b = input("Do you want to input more: ")
    if b == 'yes':
        input_List.append(int(input("Enter a number: ")))
    elif b == 'no':
        input_List.sort(reverse=True)
        break

print(input_List)

输出:

Enter a number: 5
Do you want to input more: yes
Enter a number: 7
Do you want to input more: yes
Enter a number: 90
Do you want to input more: no
[90, 7, 5]

答案 1 :(得分:0)

它应该像这样:

a = input("Enter a number: ")
l = [int(a)]
while True:
    b = input("Do you want to input more: ")
    if b == 'yes':
        c = input("Enter another number:")
        l.append(int(c))
    elif b == 'no':
        l.sort(reverse=True)
        print(l)
        break

答案 2 :(得分:0)

很多逻辑错误,还有更细微的错误

  • raw_input返回一个字符串,除非转换为整数,否则不会获得正确的数字排序。
  • 是/否问题逻辑被打破了,来不及了...
  • 您永远不会在列表上使用append,它将始终包含2个元素。 my_list = [a,c]没有任何意义。

我的建议:

# this is for retrocompatibility. Python 3 users will ditch raw_input altogether
try:
    raw_input
except NameError:
    raw_input = input   # for python 3 users :)

# initialize the list with the first element
my_list = [int(raw_input("Enter a number: "))]

while True:
    b = raw_input("Do you want to input more: ")
    if b == 'yes':
        # add one element
        my_list.append(int(raw_input("Enter another number:")))
    elif b == 'no':
        my_list.sort(reverse=True)
        print(my_list)
        break

答案 3 :(得分:0)

您需要将新输入的值添加到列表中,而不是每次迭代都重新创建一个新变量。

以下是修改后的代码,使用input而不是raw_input来实现Python 3兼容性:

a = input('Enter number: ')

# create a list, add the first number
# we use a list so we can append each new number that is added
my_list = [a]

while True:
    b = input("Do you want to input more: ")
    if b == 'yes':
        inputted = input("Enter another number: ")
        my_list.append(inputted)
    elif b == 'no':
        break

my_list.sort(reverse=True)  # reverse sort list
print(my_list)

请注意,我们会将新输入的值附加到在循环开始前 声明的数组中,以便在迭代之间存储这些值。然后,我们在列表末尾进行排序。


答案 4 :(得分:-1)

以下将起作用

my_list = []
a = int(raw_input("Enter a number: "))
my_list.append(a)
while True:
    b = raw_input("Do you want to input more: ")
    if b == 'yes':
        c = int(raw_input("Enter another number:"))
        my_list.append(c)
        continue
    elif b == 'no':
        my_list.sort(reverse=True)
        print(my_list)
        break

输出:

Enter a number: 4
Do you want to input more: yes
Enter another number:3
Do you want to input more: yes
Enter another number:8
Do you want to input more: no
['8', '4', '3']