Форум сайта python.su
0
Помогите пожалуйста, не справляюсь!!!
Программа должна спрашивать у пользователя слова и запоминать их, пока он не введёт пустое слово. После этого программа должна отсортировать введённые слова по количеству удвоенных букв в них (словах), и распечатать отсортированный список.
Как это сделать без использования функций? Проходили только “lower”.
Отредактировано Vikkivikki (Дек. 3, 2012 21:03:55)
Офлайн
0
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)
Офлайн
0
Можно еще сделать
arr.append(s.lower())
Офлайн
Несколько тем назад почти аналогичное обсуждалось. Вот без функций:
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
Офлайн
0
Да, я задачу не до конца прочитал. Просто отсортировал.
Офлайн
0
А нельзя ли сделать это как-то без использования ‘def’?
Офлайн
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)
Офлайн