2016-10-29 2 views
-2

мне нужно перебрать входа пользователя (обычное текстовое сообщение с буквами, цифрами и другими регулярными символами, включая пробельные символы) в диапазоне, например:Loop через пользовательский ввод в диапазоне

Моего диапазон читать- символы с позиции (или индекса) 3: -m - всего лишь switch для консоли, поэтому он знает, что это текстовое сообщение, поэтому я хочу игнорировать -m + следующее пробел и начать рассматривать строку и ее размер от H . Размер строки будет 12 (5 + 1 + 6).

Моя попытка:

message = "-m Hello World!" 

fragSize = 3 
fragCount =0 
start = 0 
end = fragSize 


if message.startswith('-m '): 
    message = message[3:] #separates -m from the message 

for index in range(1, len(message)): 
    print('index[start:end]') 
    start = end 
    end += fragSize 

Сообщение:

-m Hello world!

Вывод должен быть:

Hel 
lo_ (_ is a whitespace) 
wor 
ld! 
+1

Что вы пробовали? Пожалуйста, покажите свой код и объясните, какие трудности у вас есть. – idjaw

+0

Я видел подобный вопрос сегодня, но я могу его найти. Используйте что-то вроде 'text [i: i + 3]' в цикле 'for i'. – furas

+0

Почему downvote? Пожалуйста, объясните – redesert17

ответ

-1
message = '-m Hello world!' 
if message.startswith('-m '): 
    message = message[3:] 
while message!= '': 
    print message[:3] 
    message = message[3:] 

Хель
ло
wor
ld!

+1

Спасибо. Это то, что я искал! – redesert17

+0

Люди STUPID !! @febe – rafalf

+0

@ febeks17 принял это, и еще одна умная задница подарила мне минус ... – rafalf

-1

Вы можете использовать ломтик [i:i+3] с for тросика, чтобы создать его

text = 'Hello world!' 

data = [text[i:i+3] for i in range(0, len(text), 3)] 

print(data) 

['Hel', 'lo ', 'wor', 'ld!'] 

и вы можете использовать '\n'.join(data) для печати как

Hel 
lo_ (_ is a whitespace) 
wor 
ld! 

Вы можете распознать -m с помощью startswith()

text = '-m Hello world!' 

if text.startswith('-m '): 
    text = text[3:] # remove "-m " 

    data = [text[i:i+3] for i in range(0, len(text), 3)] 
    print('\n'.join(data)) 
+0

И если я хочу зациклировать еще несколько вещей в цикле for, как мне его переписать? Потому что я отправляю сокеты, которые разделены на фрагменты, используя этот цикл for, но после деления мне нужно отправить фрагмент, а затем отправить другой, пока не будет отправлено все сообщение. – redesert17

-1

Посмотрите на argparse модуль (ссылка в конце) для анализа входных аргументов с консоли. Вот фрагмент, который вы можете полностью использовать, не беспокоясь об отключении входного аргумента switch.

import argparse 

parser = argparse.ArgumentParser(description="Process message") 
parser.add_argument('-m', dest='msg', type=str, help="Enter a message", required=True) 
args = parser.parse_args() 
x = args.msg 

for p in range(0,len(x),3): 
    snip = x[p:p+3] 
    snip = snip.replace(' ', '_') 
    print(snip) 

Вы можете использовать эти команды для запуска программы CD в директорию, в которой сохранен файл.

это покажет текст справки

python filename.py -h 

это будет запускать программу

python filename.py -m "Hello World!" 

Ссылка документации к argparsehttps://docs.python.org/dev/library/argparse.html