Найти - Пользователи
Полная версия: Модификация сортировки пузырьком!
Начало » Python для новичков » Модификация сортировки пузырьком!
1
Vikkivikki
Помогите пожалуйста, не справляюсь!!!

Программа должна спрашивать у пользователя слова и запоминать их, пока он не введёт пустое слово. После этого программа должна отсортировать введённые слова по количеству удвоенных букв в них (словах), и распечатать отсортированный список.


Как это сделать без использования функций? Проходили только “lower”.
Kamo
if __name__ == '__main__':
    arr = []
    while True:
        s = raw_input()
        if not s or s == '':
            break
        arr.append(s)
    i = len(arr)
    while i > 1:
       for j in xrange(i - 1):
           if arr[j] > arr[j + 1]:
               arr[j+1], arr[j] = arr[j], arr[j+1]
       i -= 1
    for a in arr:
        print(a)
Kamo
Можно еще сделать
arr.append(s.lower())
раз на то пошло
dimy44
Несколько тем назад почти аналогичное обсуждалось. Вот без функций:
def cmp_double_char(word1, word2):
    n, double1 = 0, 0
    for char in word1[1:]:
        if char.lower() == word1[n].lower():
            double1 += 1
        n += 1
    n, double2 = 0, 0
    for char in word2[1:]:
        if char.lower() == word2[n].lower():
            double2 += 1
        n += 1
    return double1 < double2
words = []
while 1:
    word = raw_input(u'Word:').decode("cp1251")
    if not word:
        break
    words.append(word)
len_words = len(words)
for a in xrange(len_words):
    for b in xrange(1, len_words - a):
        word1, word2 = words[b - 1], words[b]
        if cmp_double_char(word1, word2):
            words[b - 1], words[b] = word2, word1
for word in words:
    print word
Kamo
Да, я задачу не до конца прочитал. Просто отсортировал.
Vikkivikki
А нельзя ли сделать это как-то без использования ‘def’?
dimy44
words = []
while 1:
    word = raw_input(u'Word:').decode("cp1251") # или какая кодировка у Вас.
    if not word:
        break
    words.append(word)
len_words = len(words) # чтоб не вычислять len() каждый раз в цикле.
for a in xrange(len_words):
    for b in xrange(1, len_words - a):
        word1, word2 = words[b - 1], words[b]
        n = 0 # счетчик итераций.
        double1 = 0 # счетчик дубл. символов.
        for char in word1[1:]:
            if char.lower() == word1[n].lower(): # если символ равен символу перед ним.
                double1 += 1
            n += 1
        n, double2 = 0, 0
        for char in word2[1:]:
            if char.lower() == word2[n].lower():
                double2 += 1
            n += 1
        if double1 < double2:
            words[b - 1], words[b] = word2, word1
for word in words: # печать
    print word
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB