פתרון קורס פייתון תרגיל 4

איך אפשר לפתור את התרגיל לפני שלמדנו מערכים דינמיים?

רמז: הסוד הוא שרשור מחרוזות

זה מה שאני נסיתי

""" The code ask from the user to enter 
text in several lines and print it
in the opposite order when find empty line"""

print "enter taxt in several lines"
while True:
    text = raw_input()
    if text == '':break

    text += "\n"
text = text[::-1]
print text 

התוכנית רצה עד לאחר היציאה מהלולאה. לאחר מכן היא נעצרת ולא ממשיכה

כשנסיתי לדבג קיבלתי את ההודעה הבאה:

(Pdb) p
*** SyntaxError: SyntaxError('unexpected EOF while parsing', ('<string>', 0, 0, ''))

הי עמיר,

כרגע יש שתי בעיות בקוד:

הראשונה בשורה:

text = raw_input

נסה לחשוב מה קורה לטקסט כשמגיעים לשורה זו בפעם השניה.

הבעיה השניה בשורה:

text = text[::-1]

אבל אותה אתה כבר תראה לבד אחרי שתתקן את הראשונה :slight_smile:

הי תקנתי את הקוד:

""" The code ask from the user to enter 
text in several lines and print it
in the opposite order when find empty line"""

text = ''
print "enter taxt in several lines"
while True:
    in_put = raw_input()
    if in_put == '':break

    text += in_put + "\n"
text = text[::-1]
print text

זה עובד טוב. אני לא רואה בעיה בשורה :

 text = text[::-1]

“”"
answer 4
“”"
print “Enter the mishpat ’ and the end set the empty line”
total_lines=""
while True:
line=raw_input()
if line=="":break
total_lines= total_lines + line + ‘\n’

total_lines=total_lines.split("\n")
total_lines=total_lines[::-1]
for l in total_lines
print l

הי יוני,

בשביל להדביק קוד פה בפורום צריך להקיף אותו בשלושה סימני גרש הפוך (backtick), כלומר הסימן הזה `` רק שיופיע שלוש פעמים בשורה משלו, ואז שורה אחרי זה הקוד ואז בשורה חדשה שוב שלוש פעמים גרש הפוך.

ככה זה יוצא:

"""
answer 4
"""
print "Enter the mishpat and the end set the empty line"
total_lines=""
while True:
  line = raw_input()
  if line == "":
    break

  total_lines = total_lines + line + "\n"

total_lines=total_lines.split("\n")
total_lines=total_lines[::-1]
for l in total_lines:
  print l

זה עובד אבל לדעתי אפשר להסתדר יופי גם בלי ה split והשורה עם המינוס אחד שכולכם אוהבים לכתוב :slight_smile:

למשל אפשר לחבר את השורות הפוך כבר בתוך הלולאה כלומר לכתוב בתוך הלולאה:

  total_lines = line + "\n" + total_lines

בצורה כזו ב total_lines תקבל כבר את כל הטקסט בסדר שורות הפוך

לייק 1

ועמיר - הבעיה שהתרגיל ביקש להציג את השורות בסדר הפוך, אבל הקוד שלך הופך גם את סדר האותיות בכל שורה.

כלומר עבור הקלט:

one
two
three
four

נרצה לקבל:

four
three
two
one

ואילו התוכנית שלך מדפיסה:

ruof
eerht
owt
eno

להלן התיקון: (לקחתי את העצה שלך (:slight_smile:)

""" The code ask from the user to enter 
text in several lines and print it
in the opposite order when find empty line"""

text = ''
print "enter text in several lines"
while True:
    in_put = raw_input()
    if in_put == '':break

    text = in_put + "\n" + text 

print text 
לייק 1