-
יש לי רשימה ולכל אחד ברישמה יש קובץ טקסט שאני רוצה שיפתח כשמתקבל הקלט המתאים.
למשל
רבא=rava.txt אביי=abye.txt שמואל=shmuel.txt
אז אפשר לכתוב (בערך, לא זוכר כרגע בדיוק איך להגדיר קריאת קלט והדפסת קובץ טקסט)if input = "רבא" print rava.txt elsif if input = "אביי" print abye.txt if input = "שמואל" print = shmuel.txt elsif print "שם לא קיים במערכת"
עכשיו זה יפה, אבל כשיש לי כ1000 שמות ולכל אחד קובץ טקסט, זה ארוך לכתוב את כל זה...
השאלה אם יש דרך לעשות יותר קצר? -
@lindoorsos תעשה שני מערכים מקבילים, אחד של הקלט ואחד של הפלט
חפש את הקלט במערך הקלט, וקח את הפלט ממערך הפלט בדיוק מאותו אינדקס שבו היה הקלט במערך הקלט.inputs = ["רבא","אביי","שמואל"] outputs = [rava.txt, abye.txt, shmuel.txt] try: i = inputs.index(myinput) print(outputs[i]) except ValueError: print("שם לא קיים במערכת")
-
הנה קוד כמו ש@yossiz ענה:
names = { "רבא": "rava.txt", "אביי": "abye.txt", "שמואל": "shmuel.txt" } chosen = names.get(input, None) if chosen is not None: print(chosen) else: print("שם לא קיים במערכת")
סתם שאלה, הקוד שכתבת תקני?
אפשר לכתוב print ללא סוגריים? -
@dovid אמר בעזרה | בניית תוכנת חיפוש בPYTHON:
הנה קוד כמו ש@yossiz ענה:
names = { "רבא": "rava.txt", "אביי": "abye.txt", "שמואל": "shmuel.txt" } chosen = names.get(input, None) if chosen is not None: print(chosen) else: print("שם לא קיים במערכת")
סתם שאלה, הקוד שכתבת תקני?
אפשר לכתוב print ללא סוגריים?סתם לשם החפירה, הייתי משנה קצת:
(כי בדיוק פה הכח של פייתון מבחינתי. בנראות וקריאות..)names = { "רבא": "rava.txt", "אביי": "abye.txt", "שמואל": "shmuel.txt" } if names.get(input): print(names[input]) else: print("שם לא קיים במערכת")
או יותר קצר:
print(names.get(input, "שם לא קיים במערכת"))
אני בוחר להשתמש ב
print(names[input])
ולא בprint(names.get(input))
כי לדעתי זאת דרך נכונה לתת לפיתון להקפיץ שגיאות בעצמה ולא לנסות לנהל אותם לבד. זה מקל בד"כ על דיבאג.. -
@dovid אמר בעזרה | בניית תוכנת חיפוש בPYTHON:
הנה קוד כמו ש@yossiz ענה:
names = { "רבא": "rava.txt", "אביי": "abye.txt", "שמואל": "shmuel.txt" } chosen = names.get(input, None) if chosen is not None: print(chosen) else: print("שם לא קיים במערכת")
סתם שאלה, הקוד שכתבת תקני?
אפשר לכתוב print ללא סוגריים?אני כתבתי ככה כמה פעמים
-
@lindoorsos כמו שחשבתי dict הוא למעשה טבלת גיבוב, ראה כאן.
-
@רחמים אמר בעזרה | בניית תוכנת חיפוש בPYTHON:
@lindoorsos כמו שחשבתי dict הוא למעשה טבלת גיבוב, ראה כאן.
כפי שנרמז זה מאוד מאוד לא רלוונטי לנושא ולשואל.
-
ברור לי שאני מפשל במשהו.כבר הרבה זמן לא ישבתי על פייתון, ואני די מתחיל בנושא...
אז ברור שאני עושה טעות שטותית, אבל אני לא מצליח למצוא אותה
מה התקלה כאן?names = raw_input ('enter name') names = { "רבא": "rava.txt", "אביי": "abye.txt", "שמואל": "shmuel.txt" } chosen = names.get(input, None) if chosen is not None: print(chosen) else: print("שם לא קיים במערכת")
-
@lindoorsos אתה מקבל שגיאה? תדביק פה את הפלט
-
Traceback (most recent call last): File "C:\Users\user\Downloads\Portable Python-3.8.6 x64\App\PyScripter\module2.py", line 27, in <module> main() File "C:\Users\user\Downloads\Portable Python-3.8.6 x64\App\PyScripter\module2.py", line 13, in main names = raw_input ('enter name') NameError: name 'raw_input' is not defined
-
@yossiz זה הקוד המלא שכתבתי
def main(): names = raw_input ('enter name') names = { "רבא": "rava.txt", "אביי": "abye.txt", "שמואל": "shmuel.txt" } chosen = names.get(input, None) if chosen is not None: print(chosen) else: print("שם לא קיים במערכת") if __name__ == '__main__': main()
-
הנה:
def main(): name = input ('enter name: ') names = { "רבא": "rava.txt", "אביי": "abye.txt", "שמואל": "shmuel.txt" } chosen = names.get(name, None) if chosen is not None: print(chosen) else: print("שם לא קיים במערכת") if __name__ == '__main__': main()
-
@yossiz אמר בעזרה | בניית תוכנת חיפוש בPYTHON:
הנה:
def main(): name = input ('enter name: ') names = { "רבא": "rava.txt", "אביי": "abye.txt", "שמואל": "shmuel.txt" } chosen = names.get(name, None) if chosen is not None: print(chosen) else: print("שם לא קיים במערכת") if __name__ == '__main__': main()
תודה.כלומר המדריך שאני לומד ממנו הוסיף סתם את raw_?
-
@lindoorsos לא, זה היה בפייתון 2, בגירסה 3 שינו את השם של הפונקציה.
-
@yossiz אמר בעזרה | בניית תוכנת חיפוש בPYTHON:
@lindoorsos לא, זה היה בפייתון 2, בגירסה 3 שינו את השם של הפונקציה.
אה אוי.אני עובד עם מדריך של פייתון 2...נחפש של 3.בינתיים מה התקלה כאן?
def main(): rava_file = open (r'C:\Users\user\Downloads\Portable Python-3.8.6 x64\baal\rava.txt) rava = rava_file.read() name = input ('enter name: ') names = { "רבא": rava, "אביי": "abye.txt", "שמואל": "shmuel.txt" } chosen = names.get(name, None) if chosen is not None: print(chosen) else: print("שם לא קיים במערכת") if __name__ == '__main__': main()