Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Python] Печать строк в обратном порядке 
V
    Опции темы
Paranorma
Дата 31.7.2007, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 1.1.2007

Репутация: 1
Всего: 1



Есть вопрос.
Так как занимаюсь по индивидуальной программе, то с каникулами я обломилась очень сильно.  smile 
Препод дал 2 задачи.
в одной нандо было просто напечатать слова в обратном порядке, в другой - еще и буквы в словах в обратном порядке.  С первой задачей я легко справилась.  smile 

Код

a = []
while True:
    s = raw_input(">>>")
    if not s:
        break
    a.append(s)

i = len(a)-1        
while i >= 0:
    print a[i]
    i = i-1


А вот со второй не получается. Я поняла, что здесь по сути тот же алгоритм, что должен быть вложенный цикл для печати букв в обратном порядке. Написала так:
Код

a = []
while True:
    s = raw_input(">>>")
    if not s:
        break
    a.append(s)

i = len(a)-1        
while i >= 0:
    j = len(s)-1
    while j >= 0:
        j = j-1
    print a[i]
    i = i-1

Все равно печатаются только слова в обратном порядке. Поясню, что должно происходить.
Например, я ввожу строки 123, 456, а распечатываться они будут так:

654
321

Мне Void предложил все это функциями написать, но мне все это надо без использования функций.  Препод мне вчера еще говорил о том, что последнее, что запоминает программа - пустая строка. Я не совсем понимаю этой его подсказки. Я подумала, что при переворачивании букв, видимо, нужно написать условие, что если строка пустой не является,то буквы переворачивать. Написала такой бред:
Код

a = []
while True:
    s = raw_input(">>>")
    if not s:
        break
    a.append(s)

i = len(a)-1        
while i >= 0:
    if s != " ": 
        j = len(s)-1
        while j >= 0:
            j = j-1
    print a[i]
    i = i-1

Что ж я такая бестолковая? Ведь все просто.  В чем ошибка? как исправить?
PM MAIL Skype Jabber MSN   Вверх
setq
Дата 31.7.2007, 20:23 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Деструктивное предложение: сказать преподу "спасибо" и начать осваивать Питон по сетевым тьюториалам самостоятельно (тем более что есть же неплохие переведённые учебники).




(
Код

for x in reversed(a):
    print x[-1::-1]
)
  Вверх
Paranorma
Дата 31.7.2007, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 1.1.2007

Репутация: 1
Всего: 1



Я этим и занимаюсь, все по учебникам, да через ребят этого форума что-то узнаю.
PM MAIL Skype Jabber MSN   Вверх
Paranorma
Дата 1.8.2007, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 1.1.2007

Репутация: 1
Всего: 1



 smile 
Люди добрые! Помогите мне пожалуйста!
В общем препод мой опять всем недоволен. Снова его эта задача не устроила. Сначала показала ему вариант приведенный выше.
Код

a = []
while True:
    s = raw_input ("Enter the string")
    if not s:
        break
    a.append(s)
for x in reversed(a):
    print x[-1::-1]

Потом он мне написал вот что:

напишите функцию
которая в качестве параметра получает строку а в качестве
результата возвращает строку с символами переставленными 
задом наперед. Например, получает "abc" возвращает "cba".


Я ему написала такой вариант:

Код

def reverse_string(s):
    while True:
        s = raw_input ("Enter the string")
        if not s:
            break
        result = ''
        i = len(s) - 1
        while i >= 0:
            result += s[i]
            i -= 1
        return result
print reverse_string(s)

Его по-прежнему все это не устраивает. Сам же мне говорит задание "ВВЕСТИ СТРОКИ И НАПЕЧАТАТЬ ИХ В ОБРАТНОМ ПОРЯДКЕ, БУКВЫ В СТРОКАХ ТАК ЖЕ ДОЛЖНЫ БЫТЬ РАСПОЛОЖЕНЫ В ОБРАТНОМ ПОРЯДКЕ". Сегодня прицепился ко мне почему я везде и всюду использую raw_input а как еще можно ввести строки? 
Теперь же надо написать эту же программу с помощью нескольких функций. 
Я пока что написала такой фрагмент. Куда дальше двигаться? Этот мой вариант конечно не работает совсем. Здесь о переворачивании букв в слове ни звука ни сказано. Но принцип думаю ясен. Создание списка в одной функции, сортировка - другая функция. 
Код

def function(s):
    a = []
    while True:
        s = raw_input("Enter the string")
        if not s:
            break
        a.append(s)
        return a

def reverse(a):
    i = len(a)-1        
    while i >= 0:
        print a[i]
        i = i-1
    return a[i]
print reverse(a[i])

PM MAIL Skype Jabber MSN   Вверх
doomik
Дата 2.8.2007, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Одинокий волк
**


Профиль
Группа: Участник
Сообщений: 360
Регистрация: 25.10.2005
Где: #vingrad

Репутация: 3
Всего: 15



Код

# Функция меняет положения букв
def reverseword(word):
    neword = '' # переменная в которую поместится результат
    i = 1
    while i != len(word)+1:
        neword = neword + word[i*(-1)] # умножаем на отриц. число чтоб добавлять буквы с конца
        i += 1                                     # переменой word
    return neword

# Функция меняет положения строк
def revarr(arr):
    a = []
    lenarr = len(arr)-1
    while lenarr != -1:
        a.append(reverseword(arr[lenarr])) # убиваем 2 зайцев, сначало меняем буквы а потом строку
        lenarr -= 1
    return a

# Функция для чтения данных
def datainput():
    arr = []
    while True:
        s = raw_input("Enter the string: ")
        if not s:
            break
        arr.append(s)
    return arr

# main 
a = []
a = datainput()
a = revarr(a)
print a



--------------------
"Единственный способ изучать новый язык программирования - писать на нем 
программы." 
- Brian Kernighan

Remember, st1ng3r 
/server irc.ircline.ru /j #vingrad
PM   Вверх
Paranorma
Дата 2.8.2007, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 1.1.2007

Репутация: 1
Всего: 1



Спасибо!
А можно вот эту строку записать более упрощенно? Может несколькими строками, но упрощенно? 
Код

a.append(reverseword(arr[lenarr]))

Мне понятно, как это работает, но мы пока такие сложные конструкции, когда один аргумент внутри другого не изучали. Принцип ясен, но в целом такие сложности писать не умею. Препод прицепится. Я вашу программу сейчас видоизменила до:
 
Код

def datainput():
    arr = []
    while True:
        s = raw_input("Enter the string:")
        if not s:
            break
        arr.append(s)
    return arr
def revarr(arr):
    a = []
    lenarr = len(arr)-1
    while lenarr >= 0:
        a.append(reverseword(arr[lenarr]))
        lenarr -= 1
    return a
def reverseword(word):
    neword = '' 
    i = len(word) - 1
    while i >= 0:
        neword += word[i]
        i -= 1                                     
    return neword

a = datainput()
c = revarr(a)
print "\n".join(c)

PM MAIL Skype Jabber MSN   Вверх
nerezus
  Дата 2.8.2007, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Paranorma, мне это напомнил следующий тост:
Цитата

Причеш мужи к колдуну и говорит: «Колдун, хочу, чтобы у меня х** был до земли!». Колдун подумал, и отрезал ему ноги. Так выпьем за четкие ТЗ!


Тут я вижу 3 варианта:
1) Препод тупой, и не понимает код, который ты пишешь(это кстати наиболее вероятный вариант — у нас некоторые студенты знают больше преподов даже на 1-2 курсах)
2) Препод хочет что-то получить от тебя(лаве и т.д.)
3) Препод хочет тебя засадить(есть люди, которые любят делать гадости)

Цитата

Сегодня прицепился ко мне почему я везде и всюду использую raw_input 
 «А это плохо?», «Моя программа делает ИМЕННО ТО, что вы сказали. Разве не так?», «Разве программа выдает неверный результат?»
Разве сложно заучить десяток таких фраз? БУДЬ НАГЛЕЕ!

Добавлено через 4 минуты и 32 секунды
Цитата

но мы пока такие сложные конструкции, когда один аргумент внутри другого не изучали.
 А теперь ты это знаешь? Все, молодец, ты это изучила. Теперь можешь это спокойно применять.

Ты пойми, что в универе тебя не научат что-то делать! Тебе лишь дают основы, и то зачустую перевирают их, а учиться ты должна сама.

Цитата

Препод прицепится.
 «Ну Вы, я думаю, поняли этот участок?», «Я нашла довольно изящное решение», «А еще я начала читать документацию по питону...», «Разве это неправильный код?»


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0484 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.