ניווט

    תחומים
    • הרשמה
    • התחברות
    • חיפוש
    • קטגוריות
    • פוסטים אחרונים
    • משתמשים
    • חיפוש
    • מקצועות
    חוקי הפורום

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

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

      רחמים תגובה 1 תגובה אחרונה תגובה ציטוט 0
      • רחמים
        רחמים @LindoorsOS נערך לאחרונה על ידי רחמים

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

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

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

          dovid רחמים 2 תגובות תגובה אחרונה תגובה ציטוט 7
          • dovid
            dovid @yossiz נערך לאחרונה על ידי dovid

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

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

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

            yossiz A L 3 תגובות תגובה אחרונה תגובה ציטוט 2
            • yossiz
              yossiz @dovid נערך לאחרונה על ידי

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

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

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

              תגובה 1 תגובה אחרונה תגובה ציטוט 1
              • רחמים
                רחמים @yossiz נערך לאחרונה על ידי

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

                yossiz תגובה 1 תגובה אחרונה תגובה ציטוט 2
                • A
                  aaron @dovid נערך לאחרונה על ידי

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

                  רחמים תגובה 1 תגובה אחרונה תגובה ציטוט 3
                  • yossiz
                    yossiz @רחמים נערך לאחרונה על ידי yossiz

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

                    תגובה 1 תגובה אחרונה תגובה ציטוט 5
                    • רחמים
                      רחמים @aaron נערך לאחרונה על ידי רחמים

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

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

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

                      תגובה 1 תגובה אחרונה תגובה ציטוט 0
                      • L
                        LindoorsOS @dovid נערך לאחרונה על ידי

                        @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
                        • רחמים
                          רחמים @LindoorsOS נערך לאחרונה על ידי

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

                          dovid תגובה 1 תגובה אחרונה תגובה ציטוט -1
                          • dovid
                            dovid @רחמים נערך לאחרונה על ידי

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

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

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

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

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

                                L 2 תגובות תגובה אחרונה תגובה ציטוט 0
                                • L
                                  LindoorsOS @yossiz נערך לאחרונה על ידי

                                  @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
                                  
                                  yossiz תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                  • L
                                    LindoorsOS @yossiz נערך לאחרונה על ידי

                                    @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
                                    • yossiz
                                      yossiz @LindoorsOS נערך לאחרונה על ידי

                                      הנה:

                                      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
                                      • L
                                        LindoorsOS @yossiz נערך לאחרונה על ידי

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

                                        yossiz תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                        • yossiz
                                          yossiz @LindoorsOS נערך לאחרונה על ידי

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

                                          L תגובה 1 תגובה אחרונה תגובה ציטוט 1
                                          • L
                                            LindoorsOS @yossiz נערך לאחרונה על ידי

                                            @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()
                                            
                                            
                                            yossiz תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                            • yossiz
                                              yossiz @LindoorsOS נערך לאחרונה על ידי

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

                                              בינתיים מה התקלה כאן?

                                              תמיד תמיד תביא את הפלט של השגיאה

                                              L תגובה 1 תגובה אחרונה תגובה ציטוט 1
                                              • L
                                                LindoorsOS @yossiz נערך לאחרונה על ידי

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

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

                                                בינתיים מה התקלה כאן?

                                                תמיד תמיד תביא את הפלט של השגיאה

                                                invalid sytex

                                                yossiz תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                                • yossiz
                                                  yossiz @LindoorsOS נערך לאחרונה על ידי

                                                  @lindoorsos תביא את הכל

                                                  L תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                                  • L
                                                    LindoorsOS @yossiz נערך לאחרונה על ידי

                                                    @yossiz
                                                    2a3342db-b09f-4946-8e5e-15a837f97af2-image.png

                                                    yossiz תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                                    • yossiz
                                                      yossiz @LindoorsOS נערך לאחרונה על ידי

                                                      @lindoorsos נו, אתה לא מבין מה כתוב? נסית להבין?

                                                      התוכן של הפונקציה אמור להיות מוכנסת

                                                      L תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                                      • L
                                                        LindoorsOS @yossiz נערך לאחרונה על ידי

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

                                                        @lindoorsos נו, אתה לא מבין מה כתוב? נסית להבין?

                                                        התוכן של הפונקציה אמור להיות מוכנסת

                                                        וואלה לא הצלחתי להבין...גם לא אותך...

                                                        OdedDvir dovid 2 תגובות תגובה אחרונה תגובה ציטוט 0
                                                        • OdedDvir
                                                          OdedDvir תכנות @LindoorsOS נערך לאחרונה על ידי

                                                          @lindoorsos צריך טאב בתחילת השורה

                                                          L תגובה 1 תגובה אחרונה תגובה ציטוט 2
                                                          • L
                                                            LindoorsOS @OdedDvir נערך לאחרונה על ידי

                                                            @odeddvir וגם פיספתי ' אחד.עכשיו הכל בסדר. (חוץ מrtl)

                                                            תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                                            • dovid
                                                              dovid @LindoorsOS נערך לאחרונה על ידי

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

                                                              L תגובה 1 תגובה אחרונה תגובה ציטוט 2
                                                              • L
                                                                LindoorsOS @dovid נערך לאחרונה על ידי

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

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

                                                                בסדר.פשוט לא העלתי על דעתי שמדריך מלפני חודשיים של גבהים לא יתאום לגרסת פייתון עדכנית...

                                                                dovid תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                                                • 1
                                                                • 2
                                                                • 1 / 2
                                                                • First post
                                                                  Last post
                                                                בא תתחבר לדף היומי!