Найти - Пользователи
Полная версия: пытаюсь учить python
Начало » Центр помощи » пытаюсь учить python
1 2 3 4
tyua
Начал учить сей язык, вот по заданию из стратьи http://habrahabr.ru/blogs/python/29980/
- Написать программу поиска самого длинного слова в строке, разделенной пробелами.
я чють усложнил задание, хочу что б в строке находилось не одно слово, а все самые длинные.
вот что получилось у меня:
# -*- coding: UTF-8 -*-
s = raw_input("Введите строку:")

st = s.split(" ")
#print st
a = 0
b = len(st[0])
max_word = []
for i in st:
if a <= len(i):
max_word.append(i)
if a > b:
for x in max_word:
max_word.pop(0)
if a < len(x):
break
b = a
a = len(i)
for j in max_word:
print j
Думаю что это можно сделать проще, подскажите как.
ЗЫ прошу сильно не ругать, с программированием я вобще почти никогда не сталкивался.
lorien
Ваш код понимаю с трудом в три ночи. Вот мой вариант:
>>> text = 'a b cc ddd ee fff'
>>> chunks = sorted(text.split(' '), lambda a, b: cmp(len(a), len(b)))
>>> [x for x in chunks if len(x) == len(chunks[-1])]
['ddd', 'fff']
Вот ещё придумал:
>>> text = 'a b cc ddd ee fff'
>>> chunks = text.split(' ')
>>> [x for x in chunks if len(x) == len(max(chunks))]
['ddd', 'fff']
tyua
спасибо lorien, теперь я понимаючто я просто не знаю многие стандартные функции, и что-то не совсем понимаю как работают цыклы которые вы использовали :(
lorien
Да, в python есть такая фишка, что в стандартной библиотеке заложена куча вещей, причём некоторые их комбинации дают прикольный эффект :-)

UPD: Наверное, это верно, для любого языка. Пойду ка спать лучше.
Dimka665
второй вариант неправильно работает.
s = “a bb ccc dd eee sf”
max(s.split(“ ”)) == “sf”

надо так:
s = "a bb ccc dd eee sf"
d = s.split(" ")
[x for x in d if len(x)==max(map(len, d))]
lorien
Угу, ещё была мысль, что что-то я неправильно делаю, но тестовые данные подвели :-)
tyua
продолжил я выполнять задания из той же статьи..
Написать программу декодирования телефонного номера для АОН.
По запросу АОНа АТС посылает телефонный номер, используя следующие правила:
- Если цифра повторяется менее 2 раз, то это помеха и она должна быть отброшена
- Каждая значащая цифра повторяется минимум 2 раза
- Если в номере идут несколько цифр подряд, то для обозначения «такая же цифра как предыдущая» используется идущий 2 или более подряд раз знак #

Например, входящая строка 4434###552222311333661 соответствует номеру 4452136
Кстати, регулярные выражения использовать в этих заданиях - нельзя :)

вот что получилось у меня:
# -*- coding: UTF-8 -*-
s = raw_input("Введите строку:")
aon = ''
for x in [i for i in range(len(s)) if s[i] == s[i+1:i+2] and s[i] != s[i-1:i]]:
if s[x] == '#':
aon = aon[len(aon)-1:len(aon)] + aon
continue
aon = aon +s[x]
print aon
хочу услышать что скажут по этому поводу профи, спасибо.
cleg
все классно, но как автор той статьи хочу отметить что предполагается выполнить задание без list comprehensions.
так что решение tyua - вполне приемлемо для того урока. и в целом - очень неплохо не считая мелочей.

ЗЫ если что - моя аська 244540
tyua
спасибо за статью и похвалу cleg :) буду дальше читать ваши статьи, особенно интересны задания..
и если никто не против то решения заданий буду выкладывать тут, может кто подскажет что не так или как это сделать лучше.
corlovito
Помогите плиз не могу запустить следующий код, что не так(я не программист я только учусь)

>>> age =56
… if age < 65
… print (“Вам еще рано на пенсию”)

и ошибок не выдает и надпись “Вам еще рано на пенсию” не появляется помогите сделать первые шаги в изучении программирования
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