气泡排序名称有问题

时间:2018-11-02 03:15:02

标签: python python-3.x sorting bubble-sort

我遇到一些硬件问题。

我需要创建一个程序,要求用户输入20个名称。然后,程序必须按字母顺序对这些名称进行排序,然后将新排序的名称显示给用户。到目前为止,我已经知道了:

# main
def main():

    # total names to enter
    TOTAL_NAMES = 20

    # initialize index and names array
    index = 0
    names=[0]*(TOTAL_NAMES + 1)

    print('Please enter 20 names:')

    for index in range(1, TOTAL_NAMES + 1):
        names[index] = input(''+ str(index) + ': ')

    # EVERYTHING UP THERE IS GOOD

    # time to sort the names
    for maxElement in range(arraySize - 1, 0, -1):
        switchNames = False
        for index in range(0, maxElement):
            if names[index] >= names[index + 1]:
                temp = names[index]
                names[index] = names[index + 1]
                names[index + 1] = temp
                switchNames = True
        if not(switchNames):
            switchNames = True

main()

但是,当我运行程序时,出现此错误“ Type错误:'int =”和“ str”的实例之间不支持TypeError:'> ='

在过去的几个小时里,我一直在努力解决这个问题,但时间很困难。

3 个答案:

答案 0 :(得分:0)

array1=[]
limit=int (input("ENTER THE LIMTI"))
for i in range (0,limit):
    data=input()
    array1.append(data)
for i in range(0,limit):
    for j in range(i,limit):
        if array1[i]>array1[j]:
            temp=array1[i]
            array1[i]=array1[j]
            array1[j]=temp
for i in range (0,limit):
    print (array1[i])

答案 1 :(得分:0)

  • def sorting_array(name_list,limit,indication):

    对于范围在(0,limit)中的i:

       for j in range(i,limit):
    
           if indication==1:
    
               if name_list[i] > name_list[j]:
                   temp=name_list[i]
                   name_list[i]=name_list[j]
                   name_list[j]=temp
    
           else:
    
               if name_list[i] < name_list[j]:
    
                   temp=name_list[i]
                   name_list[i]=name_list[j]
                   name_list[j]=temp
    
      for i in range (0,limit):
       print (name_list[i])
    
    name_list=[] limit=int (input("ENTER THE LIMTI")) for i in range(0,limit):
    data=input()
    name_list.append(data)
    indication=int(input("ENTER 1 -> ASCENDING        2-> DESCENDING"))
    sorting_array(name_list,limit,indication)
    

答案 2 :(得分:-1)

欢迎使用StackOverflow!

首先,我看不到arraySize被定义在任何地方,因此我假设您已经定义了它,但未将其包括在代码段中。

您的错误是由此for index in range(0, maxElement):语句引起的,该语句在第一次循环迭代时将index的值设置为0。因此,它正在尝试访问names[0]。但是,代码不一致,首先是从索引1开始,然后是索引0

因此,请改用for index in range(1, maxElement):