возникли проблемы с сортировкой имен пузырьков - PullRequest
0 голосов
/ 02 ноября 2018

У меня проблемы с некоторыми hw.

Мне нужно создать программу, которая просит пользователя ввести 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()

Однако, когда я запускаю программу, я получаю эту ошибку "TypeError: '> =' не поддерживается между экземплярами 'int' и 'str'"

Я пытался понять это в течение последних нескольких часов, и мне очень тяжело.

Ответы [ 3 ]

0 голосов
/ 02 ноября 2018
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])
0 голосов
/ 02 ноября 2018
  • def sorting_array (name_list, предел, индикация):

    для i в диапазоне (0, предел):

       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)
    
0 голосов
/ 02 ноября 2018

Добро пожаловать в StackOverflow!

Прежде всего, я не вижу, чтобы arraySize определялся где-либо, поэтому я предполагаю, что вы его определили, но не включили его в фрагмент кода.

Ваша ошибка вызвана этим оператором for index in range(0, maxElement):, который устанавливает значение index в 0 на первой итерации цикла. Поэтому он пытается получить доступ к names[0]. Однако код является несовместимым, сначала начиная с индекса 1, а затем с индекса 0

Следовательно, попробуйте использовать for index in range(1, maxElement): вместо

...