דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. עזרה | בניית תוכנת חיפוש בPYTHON

עזרה | בניית תוכנת חיפוש בPYTHON

מתוזמן נעוץ נעול הועבר תכנות
34 פוסטים 7 כותבים 885 צפיות 6 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • L מנותק
    L מנותק
    LindoorsOS
    כתב ב נערך לאחרונה על ידי
    #1

    יש לי רשימה ולכל אחד ברישמה יש קובץ טקסט שאני רוצה שיפתח כשמתקבל הקלט המתאים.
    למשל
    רבא=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 שמות ולכל אחד קובץ טקסט, זה ארוך לכתוב את כל זה...
    השאלה אם יש דרך לעשות יותר קצר?

    רחמיםר תגובה 1 תגובה אחרונה
    0
    • L LindoorsOS

      יש לי רשימה ולכל אחד ברישמה יש קובץ טקסט שאני רוצה שיפתח כשמתקבל הקלט המתאים.
      למשל
      רבא=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 שמות ולכל אחד קובץ טקסט, זה ארוך לכתוב את כל זה...
      השאלה אם יש דרך לעשות יותר קצר?

      רחמיםר מנותק
      רחמיםר מנותק
      רחמים
      מורחק
      כתב ב נערך לאחרונה על ידי רחמים
      #2

      @lindoorsos תעשה שני מערכים מקבילים, אחד של הקלט ואחד של הפלט
      חפש את הקלט במערך הקלט, וקח את הפלט ממערך הפלט בדיוק מאותו אינדקס שבו היה הקלט במערך הקלט.

      inputs = ["רבא","אביי","שמואל"]
      outputs = [rava.txt, abye.txt, shmuel.txt]
      try:
      	i = inputs.index(myinput)
      	print(outputs[i])
      except ValueError:
      	print("שם לא קיים במערכת")
      yossizY תגובה 1 תגובה אחרונה
      3
      • רחמיםר רחמים

        @lindoorsos תעשה שני מערכים מקבילים, אחד של הקלט ואחד של הפלט
        חפש את הקלט במערך הקלט, וקח את הפלט ממערך הפלט בדיוק מאותו אינדקס שבו היה הקלט במערך הקלט.

        inputs = ["רבא","אביי","שמואל"]
        outputs = [rava.txt, abye.txt, shmuel.txt]
        try:
        	i = inputs.index(myinput)
        	print(outputs[i])
        except ValueError:
        	print("שם לא קיים במערכת")
        yossizY מנותק
        yossizY מנותק
        yossiz
        כתב ב נערך לאחרונה על ידי
        #3

        @רחמים בפייתון קיים טייפ יותר מתאים למיפוי ערך לערך, ויקרא שמו בישראל dict.

        📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

        dovidD רחמיםר 2 תגובות תגובה אחרונה
        7
        • yossizY yossiz

          @רחמים בפייתון קיים טייפ יותר מתאים למיפוי ערך לערך, ויקרא שמו בישראל dict.

          dovidD מנותק
          dovidD מנותק
          dovid
          ניהול
          כתב ב נערך לאחרונה על ידי dovid
          #4

          הנה קוד כמו ש@yossiz ענה:

          names = {
            "רבא": "rava.txt",
            "אביי": "abye.txt",
            "שמואל": "shmuel.txt"
          }
           
          chosen = names.get(input, None)
          if chosen is not None: 
              print(chosen)
          else:
              print("שם לא קיים במערכת")
           
          
          

          סתם שאלה, הקוד שכתבת תקני?
          אפשר לכתוב print ללא סוגריים?

          • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
          • בכל נושא אפשר ליצור קשר dovid@tchumim.com
          yossizY A L 3 תגובות תגובה אחרונה
          2
          • dovidD dovid

            הנה קוד כמו ש@yossiz ענה:

            names = {
              "רבא": "rava.txt",
              "אביי": "abye.txt",
              "שמואל": "shmuel.txt"
            }
             
            chosen = names.get(input, None)
            if chosen is not None: 
                print(chosen)
            else:
                print("שם לא קיים במערכת")
             
            
            

            סתם שאלה, הקוד שכתבת תקני?
            אפשר לכתוב print ללא סוגריים?

            yossizY מנותק
            yossizY מנותק
            yossiz
            כתב ב נערך לאחרונה על ידי
            #5

            @dovid אמר בעזרה | בניית תוכנת חיפוש בPYTHON:

            אפשר לכתוב print ללא סוגריים?

            בפייתון 2 - כן, בפייתון 3 - לא.

            📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

            תגובה 1 תגובה אחרונה
            1
            • yossizY yossiz

              @רחמים בפייתון קיים טייפ יותר מתאים למיפוי ערך לערך, ויקרא שמו בישראל dict.

              רחמיםר מנותק
              רחמיםר מנותק
              רחמים
              מורחק
              כתב ב נערך לאחרונה על ידי
              #6

              @yossiz אה"נ, אבל דיקט מן הסתם עובד על טבלת גיבוב ולעומת זאת במערכים אפשר למיין ואז לעשות חיפוש בינארי שהוא פעמים יותר מהיר וראה כאן.

              yossizY תגובה 1 תגובה אחרונה
              2
              • dovidD dovid

                הנה קוד כמו ש@yossiz ענה:

                names = {
                  "רבא": "rava.txt",
                  "אביי": "abye.txt",
                  "שמואל": "shmuel.txt"
                }
                 
                chosen = names.get(input, None)
                if chosen is not None: 
                    print(chosen)
                else:
                    print("שם לא קיים במערכת")
                 
                
                

                סתם שאלה, הקוד שכתבת תקני?
                אפשר לכתוב print ללא סוגריים?

                A מנותק
                A מנותק
                aaron
                כתב ב נערך לאחרונה על ידי
                #7

                @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)) כי לדעתי זאת דרך נכונה לתת לפיתון להקפיץ שגיאות בעצמה ולא לנסות לנהל אותם לבד. זה מקל בד"כ על דיבאג..

                aaron.tchumim@gmail.com
                Hetzner - שרתים וירטואליים ופיזיים במחירים מעולים (קישור שותפים)

                ווצאפ API - תיעוד שירות API לא רשמי.

                רחמיםר תגובה 1 תגובה אחרונה
                3
                • רחמיםר רחמים

                  @yossiz אה"נ, אבל דיקט מן הסתם עובד על טבלת גיבוב ולעומת זאת במערכים אפשר למיין ואז לעשות חיפוש בינארי שהוא פעמים יותר מהיר וראה כאן.

                  yossizY מנותק
                  yossizY מנותק
                  yossiz
                  כתב ב נערך לאחרונה על ידי yossiz
                  #8

                  @רחמים אוקיי, אני שומע, תירוץ מלומד... אבל בקוד הדוגמה שלך המערך לא ממויין ובכל מקרה הפונקציה index עובר על כל המערך עד הערך הרצוי...
                  (גם מילת המפתח: פעמים שהוא יותר מהיר... זה תלוי בכמה משתנים)

                  📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                  תגובה 1 תגובה אחרונה
                  5
                  • A aaron

                    @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)) כי לדעתי זאת דרך נכונה לתת לפיתון להקפיץ שגיאות בעצמה ולא לנסות לנהל אותם לבד. זה מקל בד"כ על דיבאג..

                    רחמיםר מנותק
                    רחמיםר מנותק
                    רחמים
                    מורחק
                    כתב ב נערך לאחרונה על ידי רחמים
                    #9

                    @aaron אמר בעזרה | בניית תוכנת חיפוש בPYTHON:

                    if names.get(input):
                    print(names[input])

                    זה יעשה את החיפוש פעמים לשווה

                    תגובה 1 תגובה אחרונה
                    0
                    • dovidD dovid

                      הנה קוד כמו ש@yossiz ענה:

                      names = {
                        "רבא": "rava.txt",
                        "אביי": "abye.txt",
                        "שמואל": "shmuel.txt"
                      }
                       
                      chosen = names.get(input, None)
                      if chosen is not None: 
                          print(chosen)
                      else:
                          print("שם לא קיים במערכת")
                       
                      
                      

                      סתם שאלה, הקוד שכתבת תקני?
                      אפשר לכתוב print ללא סוגריים?

                      L מנותק
                      L מנותק
                      LindoorsOS
                      כתב ב נערך לאחרונה על ידי
                      #10

                      @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 ללא סוגריים?

                      אני כתבתי ככה כמה פעמים

                      רחמיםר תגובה 1 תגובה אחרונה
                      0
                      • L LindoorsOS

                        @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 ללא סוגריים?

                        אני כתבתי ככה כמה פעמים

                        רחמיםר מנותק
                        רחמיםר מנותק
                        רחמים
                        מורחק
                        כתב ב נערך לאחרונה על ידי
                        #11

                        @lindoorsos כמו שחשבתי dict הוא למעשה טבלת גיבוב, ראה כאן.

                        dovidD תגובה 1 תגובה אחרונה
                        -1
                        • רחמיםר רחמים

                          @lindoorsos כמו שחשבתי dict הוא למעשה טבלת גיבוב, ראה כאן.

                          dovidD מנותק
                          dovidD מנותק
                          dovid
                          ניהול
                          כתב ב נערך לאחרונה על ידי
                          #12

                          @רחמים אמר בעזרה | בניית תוכנת חיפוש בPYTHON:

                          @lindoorsos כמו שחשבתי dict הוא למעשה טבלת גיבוב, ראה כאן.

                          כפי שנרמז זה מאוד מאוד לא רלוונטי לנושא ולשואל.

                          • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                          • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                          תגובה 1 תגובה אחרונה
                          0
                          • L מנותק
                            L מנותק
                            LindoorsOS
                            כתב ב נערך לאחרונה על ידי
                            #13

                            ברור לי שאני מפשל במשהו.כבר הרבה זמן לא ישבתי על פייתון, ואני די מתחיל בנושא...
                            אז ברור שאני עושה טעות שטותית, אבל אני לא מצליח למצוא אותה
                            מה התקלה כאן?

                            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("שם לא קיים במערכת")
                             
                            
                            yossizY תגובה 1 תגובה אחרונה
                            0
                            • L LindoorsOS

                              ברור לי שאני מפשל במשהו.כבר הרבה זמן לא ישבתי על פייתון, ואני די מתחיל בנושא...
                              אז ברור שאני עושה טעות שטותית, אבל אני לא מצליח למצוא אותה
                              מה התקלה כאן?

                              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("שם לא קיים במערכת")
                               
                              
                              yossizY מנותק
                              yossizY מנותק
                              yossiz
                              כתב ב נערך לאחרונה על ידי
                              #14

                              @lindoorsos אתה מקבל שגיאה? תדביק פה את הפלט

                              📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                              L 2 תגובות תגובה אחרונה
                              0
                              • yossizY yossiz

                                @lindoorsos אתה מקבל שגיאה? תדביק פה את הפלט

                                L מנותק
                                L מנותק
                                LindoorsOS
                                כתב ב נערך לאחרונה על ידי
                                #15

                                @yossiz

                                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
                                
                                yossizY תגובה 1 תגובה אחרונה
                                0
                                • yossizY yossiz

                                  @lindoorsos אתה מקבל שגיאה? תדביק פה את הפלט

                                  L מנותק
                                  L מנותק
                                  LindoorsOS
                                  כתב ב נערך לאחרונה על ידי
                                  #16

                                  @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()
                                  
                                  
                                  תגובה 1 תגובה אחרונה
                                  0
                                  • L LindoorsOS

                                    @yossiz

                                    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
                                    
                                    yossizY מנותק
                                    yossizY מנותק
                                    yossiz
                                    כתב ב נערך לאחרונה על ידי
                                    #17

                                    הנה:

                                    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()
                                    

                                    📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                                    L תגובה 1 תגובה אחרונה
                                    1
                                    • yossizY yossiz

                                      הנה:

                                      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()
                                      
                                      L מנותק
                                      L מנותק
                                      LindoorsOS
                                      כתב ב נערך לאחרונה על ידי
                                      #18

                                      @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_?

                                      yossizY תגובה 1 תגובה אחרונה
                                      0
                                      • L LindoorsOS

                                        @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_?

                                        yossizY מנותק
                                        yossizY מנותק
                                        yossiz
                                        כתב ב נערך לאחרונה על ידי
                                        #19

                                        @lindoorsos לא, זה היה בפייתון 2, בגירסה 3 שינו את השם של הפונקציה.

                                        📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                                        L תגובה 1 תגובה אחרונה
                                        1
                                        • yossizY yossiz

                                          @lindoorsos לא, זה היה בפייתון 2, בגירסה 3 שינו את השם של הפונקציה.

                                          L מנותק
                                          L מנותק
                                          LindoorsOS
                                          כתב ב נערך לאחרונה על ידי
                                          #20

                                          @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()
                                          
                                          
                                          yossizY תגובה 1 תגובה אחרונה
                                          0
                                          תגובה
                                          • תגובה כנושא
                                          התחברו כדי לפרסם תגובה
                                          • מהישן לחדש
                                          • מהחדש לישן
                                          • הכי הרבה הצבעות


                                          • 1
                                          • 2
                                          בא תתחבר לדף היומי!
                                          • התחברות

                                          • אין לך חשבון עדיין? הרשמה

                                          • התחברו או הירשמו כדי לחפש.
                                          • פוסט ראשון
                                            פוסט אחרון
                                          0
                                          • דף הבית
                                          • קטגוריות
                                          • פוסטים אחרונים
                                          • משתמשים
                                          • חיפוש
                                          • חוקי הפורום