2016-10-29 11 views
-2

ich brauche durch eine Benutzereingabe (regular Textnachricht mit Buchstaben, Zahlen und anderen regelmäßigen Zeichen einschließlich Leerzeichen) in einem Bereich in einer Schleife, zum Beispiel:Schleife durch Benutzereingabe in Bereich

My Bereich wird gelesen von 3 Zeichen von Position (oder Index) 3: -m ist nur ein switch für Konsole, so dass es weiß, dass es eine Textnachricht ist, so möchte ich die -m + folgenden Leerraum ignorieren und beginnen, die Zeichenfolge und ihre Größe von H zu betrachten Also ist die Stringgröße 12 (5 + 1 + 6).

Mein Versuch:

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 

Nachricht:

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

Was haben Sie versucht? Bitte zeigen Sie Ihren Code und erklären Sie, welche Schwierigkeiten Sie haben. – idjaw

+0

Ich sah ähnliche Frage heute, aber ich kann es finden. Verwenden Sie so etwas wie 'text [i: i + 3]' in 'for i' loop. – furas

+0

Warum runter? Bitte erläutern Sie – redesert17

Antwort

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

Hel
lo
012 laufenwor
ld!

+1

Danke. Das habe ich gesucht! – redesert17

+0

Die Leute sind dumm !! @febe – rafalf

+0

@febeks17 akzeptierte es und noch ein schlauer Arsch gab mir ein Minus ... – rafalf

-1

können Sie Scheibe verwenden:

-m Hello world!

ausgegeben werden soll [i:i+3] mit for Schleife es

text = 'Hello world!' 

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

print(data) 

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

zu erstellen und die Sie '\n'.join(data) verwenden es als

Hel 
lo_ (_ is a whitespace) 
wor 
ld! 

Sie -mstartswith()

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

Und wenn ich noch mehr Dinge in der for-Schleife loopen möchte, wie sollte ich es umschreiben? Weil ich Sockets sende, die in Fragmente mit dieser for-Schleife aufgeteilt sind, aber nach der Teilung, muss ich das Fragment senden und dann ein anderes senden, bis die gesamte Nachricht gesendet wird. – redesert17

-1

einen Blick auf argparse Modul Nehmen Sie mit erkennen kann, drucken (Referenz am Ende) zum Parsen von Eingabeargumenten von der Konsole. Hier ist das Snippet, das Sie vollständig verwenden können, ohne sich Gedanken darüber machen zu müssen, das Eingabeargument switch zu entfernen.

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) 

können Sie diese Befehle verwenden das Programm cd auf Verz, in der Datei gespeichert wird ausgeführt.

diese Hilfetext zeigen

python filename.py -h 

dies wird das Programm

python filename.py -m "Hello World!" 

Eine Dokumentation Link zu argparsehttps://docs.python.org/dev/library/argparse.html

Verwandte Themen