从用户输入的列表中获取3个已排序数字的总和

2024-09-30 02:23:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近开始学习python,我编写了这段代码来对用户输入的数字从最小到最大进行排序,但是在第二个数字之后,我得到了错误“NameError:name'minimum'未定义”,非常感谢您的帮助。此外,我不能使用任何内置函数对数字进行排序,因为这对类来说是一个挑战

unsorted_list = []
sorted_list = []

while True:
  unsortednum = input("enter a number or 0 to stop: ")
  if unsortednum == 0:
    while unsorted_list:
     minimum = unsorted_list[0]
  for item in unsorted_list:
        if item < minimum:
            minimum = item
        sorted_list.append(minimum)
        unsorted_list.remove(minimum)
   
    print(sorted_list)
  else:
    unsorted_list.append(unsortednum)

Tags: 代码用户if排序错误数字itemlist
2条回答

这是一种方法

sorted_list = []
while True:
  # The input you get is a string so you need to convert it to int
  unsortednum = int(input("enter a number or 0 to stop: "))
  # Use break to exit if the user input's 0
  if unsortednum == 0:
    break
  else:
    # This first creates a list of all numbers lesser than equal to unsortednum then joins the first list with a second list
    # that only contains unsortednum. After that a third list with all numbers greater than unsortednum is joined as well.
    sorted_list = [i for i in sorted_list if i <= unsortednum] + [unsortednum] + [i for i in sorted_list if i > unsortednum];
  print("Current => ",sorted_list)
print("Final => ",sorted_list)

对代码进行最少的编辑:

unsorted_list = []
sorted_list = []

while True:
  unsortednum = int(input("enter a number or 0 to stop: "))
  if unsortednum == 0:
    while unsorted_list:
      minimum = unsorted_list[0]
      for item in unsorted_list[1:]:
        if item < minimum:
          minimum = item
      sorted_list.append(minimum)
      unsorted_list.remove(minimum)
   
    print(sorted_list)
  else:
    unsorted_list.append(unsortednum)

唯一缺少的是将unsortednum指定为由unsortednum = int(input())完成的int 另外,为了不检查自身的值,在for循环中,我将unsorted_list更改为unsorted_list[1:],表示列表中除unsorted_list[0]之外的所有值

相关问题 更多 >

    热门问题