Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 3, 2012 20:55:50

Vikkivikki
Зарегистрирован: 2012-12-03
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Модификация сортировки пузырьком!

Помогите пожалуйста, не справляюсь!!!

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


Как это сделать без использования функций? Проходили только “lower”.

Отредактировано Vikkivikki (Дек. 3, 2012 21:03:55)

Офлайн

#2 Дек. 3, 2012 22:55:12

Kamo
Зарегистрирован: 2012-12-01
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Модификация сортировки пузырьком!

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)

Офлайн

#3 Дек. 3, 2012 22:56:11

Kamo
Зарегистрирован: 2012-12-01
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Модификация сортировки пузырьком!

Можно еще сделать

arr.append(s.lower())
раз на то пошло

Офлайн

#4 Дек. 3, 2012 23:01:17

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Модификация сортировки пузырьком!

Несколько тем назад почти аналогичное обсуждалось. Вот без функций:

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

Офлайн

#5 Дек. 3, 2012 23:12:42

Kamo
Зарегистрирован: 2012-12-01
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Модификация сортировки пузырьком!

Да, я задачу не до конца прочитал. Просто отсортировал.

Офлайн

#6 Дек. 4, 2012 19:01:20

Vikkivikki
Зарегистрирован: 2012-12-03
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Модификация сортировки пузырьком!

А нельзя ли сделать это как-то без использования ‘def’?

Офлайн

#7 Дек. 4, 2012 19:26:00

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Модификация сортировки пузырьком!

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

Отредактировано dimy44 (Дек. 4, 2012 19:27:08)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version