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

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

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

תנאים מרובים py

מתוזמן נעוץ נעול הועבר תכנות
5 פוסטים 4 כותבים 123 צפיות 3 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • יצירהי מנותק
    יצירהי מנותק
    יצירה
    כתב ב נערך לאחרונה על ידי
    #1

    שלום! אני מנסה ליצור רשימת תנאים בתגובה ללחיצה על כל מקש.
    יש דרך להחליף את כל הIF'ים למשהו יותר יעיל ונקי?

    (המו"מ של @LindoorsOS לא מועיל לי):

    from pynput import keyboard
    a = ''
    def on_press(key):
        try:
            
    
            if key == keyboard.Key.insert:
                global a
                a= a+'0'
              
                print('----0')
            elif key == keyboard.Key.delete:
            
                a= a+'0'
                print('----.')
                a= a+'99'
            elif key == keyboard.Key.enter:
                
                #
                #Stop listener
                return False
    
                
            elif key == keyboard.Key.end:
    
                a= a+ '1'
                print('--------1')
                
            elif key == keyboard.Key.down:
    
                a= a+ '2'
                print('-------2')
       
            elif key == keyboard.Key.page_down:
             
    
                a= a+ '3'
    
                print('----------3')
            elif key == keyboard.Key.left:
           
    
                a= a+ '4'
    
                print('---------4')
            elif key == keyboard.Key.right:
    
    
    
                print('--------6')
                
    
                a= a+ '6'
            elif key == '+':
               
    
                a=a + '5'
    
                print('--------5')
    
            elif key == keyboard.Key.up:
             
    
                a= a+ '8'
                print('-------8')
    
    
            elif key == keyboard.Key.page_up:
    
    
                a=a + '9'
    
                print('--------9')
            elif key == keyboard.Key.home:
                
    
                a=a+ '7'
    
                print('----------7')
    
            else:
               
    
                a=a+ '5'
    
                print('-------5')
    
                    
            print('alphanumeric key {0} pressed'.format(key.char))
        except AttributeError:
                print('err')
            print('special key {0} pressed'.format(key))
    
    def on_release(key):
        a = '0'
    
        
    with keyboard.Listener(
            on_press=on_press,
            on_release=on_release) as listener:
        listener.join()
    
    
    listener = keyboard.Listener(
        on_press=on_press,
        on_release=on_release)
    listener.start()
    print(a)
    
    

    תודה!

    chvC nigunN 2 תגובות תגובה אחרונה
    0
    • יצירהי יצירה

      שלום! אני מנסה ליצור רשימת תנאים בתגובה ללחיצה על כל מקש.
      יש דרך להחליף את כל הIF'ים למשהו יותר יעיל ונקי?

      (המו"מ של @LindoorsOS לא מועיל לי):

      from pynput import keyboard
      a = ''
      def on_press(key):
          try:
              
      
              if key == keyboard.Key.insert:
                  global a
                  a= a+'0'
                
                  print('----0')
              elif key == keyboard.Key.delete:
              
                  a= a+'0'
                  print('----.')
                  a= a+'99'
              elif key == keyboard.Key.enter:
                  
                  #
                  #Stop listener
                  return False
      
                  
              elif key == keyboard.Key.end:
      
                  a= a+ '1'
                  print('--------1')
                  
              elif key == keyboard.Key.down:
      
                  a= a+ '2'
                  print('-------2')
         
              elif key == keyboard.Key.page_down:
               
      
                  a= a+ '3'
      
                  print('----------3')
              elif key == keyboard.Key.left:
             
      
                  a= a+ '4'
      
                  print('---------4')
              elif key == keyboard.Key.right:
      
      
      
                  print('--------6')
                  
      
                  a= a+ '6'
              elif key == '+':
                 
      
                  a=a + '5'
      
                  print('--------5')
      
              elif key == keyboard.Key.up:
               
      
                  a= a+ '8'
                  print('-------8')
      
      
              elif key == keyboard.Key.page_up:
      
      
                  a=a + '9'
      
                  print('--------9')
              elif key == keyboard.Key.home:
                  
      
                  a=a+ '7'
      
                  print('----------7')
      
              else:
                 
      
                  a=a+ '5'
      
                  print('-------5')
      
                      
              print('alphanumeric key {0} pressed'.format(key.char))
          except AttributeError:
                  print('err')
              print('special key {0} pressed'.format(key))
      
      def on_release(key):
          a = '0'
      
          
      with keyboard.Listener(
              on_press=on_press,
              on_release=on_release) as listener:
          listener.join()
      
      
      listener = keyboard.Listener(
          on_press=on_press,
          on_release=on_release)
      listener.start()
      print(a)
      
      

      תודה!

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

      @יוסף1111 אני ממש לא מבין בתיכנות אבל מה עם while?? (מקווה שלא מבלבל את המוח)

      בלוג | מייל

      yossizY תגובה 1 תגובה אחרונה
      0
      • יצירהי יצירה

        שלום! אני מנסה ליצור רשימת תנאים בתגובה ללחיצה על כל מקש.
        יש דרך להחליף את כל הIF'ים למשהו יותר יעיל ונקי?

        (המו"מ של @LindoorsOS לא מועיל לי):

        from pynput import keyboard
        a = ''
        def on_press(key):
            try:
                
        
                if key == keyboard.Key.insert:
                    global a
                    a= a+'0'
                  
                    print('----0')
                elif key == keyboard.Key.delete:
                
                    a= a+'0'
                    print('----.')
                    a= a+'99'
                elif key == keyboard.Key.enter:
                    
                    #
                    #Stop listener
                    return False
        
                    
                elif key == keyboard.Key.end:
        
                    a= a+ '1'
                    print('--------1')
                    
                elif key == keyboard.Key.down:
        
                    a= a+ '2'
                    print('-------2')
           
                elif key == keyboard.Key.page_down:
                 
        
                    a= a+ '3'
        
                    print('----------3')
                elif key == keyboard.Key.left:
               
        
                    a= a+ '4'
        
                    print('---------4')
                elif key == keyboard.Key.right:
        
        
        
                    print('--------6')
                    
        
                    a= a+ '6'
                elif key == '+':
                   
        
                    a=a + '5'
        
                    print('--------5')
        
                elif key == keyboard.Key.up:
                 
        
                    a= a+ '8'
                    print('-------8')
        
        
                elif key == keyboard.Key.page_up:
        
        
                    a=a + '9'
        
                    print('--------9')
                elif key == keyboard.Key.home:
                    
        
                    a=a+ '7'
        
                    print('----------7')
        
                else:
                   
        
                    a=a+ '5'
        
                    print('-------5')
        
                        
                print('alphanumeric key {0} pressed'.format(key.char))
            except AttributeError:
                    print('err')
                print('special key {0} pressed'.format(key))
        
        def on_release(key):
            a = '0'
        
            
        with keyboard.Listener(
                on_press=on_press,
                on_release=on_release) as listener:
            listener.join()
        
        
        listener = keyboard.Listener(
            on_press=on_press,
            on_release=on_release)
        listener.start()
        print(a)
        
        

        תודה!

        nigunN מנותק
        nigunN מנותק
        nigun
        כתב ב נערך לאחרונה על ידי
        #3

        @יוסף1111
        זה עוזר?
        https://data-flair.training/blogs/python-switch-case/

        מייל: nigun@duck.com

        תגובה 1 תגובה אחרונה
        2
        • chvC chv

          @יוסף1111 אני ממש לא מבין בתיכנות אבל מה עם while?? (מקווה שלא מבלבל את המוח)

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

          @chv התכוונת ל-switch? לא ברור לי איך while יכול לעזור פה.
          (אגב, גם אני הצהרתי לפני לא הרבה זמן שאני לא מבין בתכנות, וב"ה אני מתקדם די יפה, תחזור עוד שנה ונראה...)

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

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

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

            @chv התכוונת ל-switch? לא ברור לי איך while יכול לעזור פה.
            (אגב, גם אני הצהרתי לפני לא הרבה זמן שאני לא מבין בתכנות, וב"ה אני מתקדם די יפה, תחזור עוד שנה ונראה...)

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

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

            @yossiz אכן זה היה הפתרון המוצלח. תודה לך.
            בזכות זה הרווחנו 2 דברים:
            א. פיתרון לבאג בקשר למקש 5. כי בספריה זו המקשים הימניים מוגדרים כמקשי פונקציה ולמקש 5 אין פונקציה.
            ב. הקלדה כמו בפלאפון פלט של אותיות.
            האם אפשר לקצר עוד?
            קוד של א':

            mmm = { 'Key.insert': '0' , 'Key.delete' : '88' , 'Key.end': '1' , 'Key.home': '7', 
                    'Key.down': '2' , 'Key.page_down': '3' , 'Key.left':'4' ,
                    'Key.right':'5' , 'Key.up': '8' , 'Key.page_up':'9' ,'<12>': '5', '<97>': '1' ,
                    '<98>' : '2' , '<99>': '3' , '<100>': '4', '<101>': '5' ,
                    '<102>' : '6','<103>': '7', '<104>': '8', '<105>': '9', 'num_lock': '0' ,
                    '<96>': '0' ,"'-'": '0' ,"'*'": '0' ,"'/'": '0' ,"'+'": '0'}
            from pynput import keyboard
            a = ''
            def on_press(key):
                    try:
                        akk = str(key)
                        print(akk)
                        if key != keyboard.Key.enter:
                                 y = str((mmm[akk]))
                                 global a
                                 a= a + y
                        
                        if key == keyboard.Key.enter:
            
                                return False
            
                        #print('alphanumeric key {0} pressed'.format(key.char))
                    except AttributeError:
                        print('err')
                        print('special key {0} pressed'.format(key))
            
            def on_release(key):
                a = '0'
                #print('{0} released'.format(key))
                
                    # Stop listener
                    #return False
            
            # Collect events until released
            with keyboard.Listener(
                    on_press=on_press,
                    on_release=on_release) as listener:
                listener.join()
            
            # ...or, in a non-blocking fashion:
            listener = keyboard.Listener(
                on_press=on_press,
                on_release=on_release)
            listener.start()
            print(a)
            
            

            קוד לב' - הקלדה כמו פלאפון (כשר..)

            mmm = { 'Key.insert': '0' , 'Key.delete' : ' ' , 'Key.end': '1' , 'Key.home': '7', 
                    'Key.down': '2' , 'Key.page_down': '3' , 'Key.left':'4' ,
                    'Key.right':'5' , 'Key.up': '8' , 'Key.page_up':'9' ,'<12>': '5', '<97>': '1' ,
                    '<98>' : '2' , '<99>': '3' , '<100>': '4', '<101>': '5' ,
                    '<102>' : '6','<103>': '7', '<104>': '8', '<105>': '9','<110>': ' ', 'num_lock': '0' ,
                    '<96>': '0' ,"'-'": '-' ,"'*'": '*' ,"'/'": '/' ,"'+'": '+'}
            nam = {'1':'א', '11':'ב', '2':'ג', '22':'ד','3':'ה', '33':'ו', '4':'ז', '44':'ח','5':'ט', '55':'י', '6':'כ',
                   '66':'ל','7':'מ', '77':'נ', '8':'ס', '88':'ע','9':'פ', '99':'צ', '0':'ק', '00':'ר','+':'ש',
                   '++':'ת', '-':'ך', '--':'ץ','*':'ף', '**':'ם', '.':' '}
            from pynput import keyboard
            a = ''
            b = ''
            t = ''
            def on_press(key):
                    try:
                        akk = str(key)
                        #print(akk)
                        if key != keyboard.Key.enter:
                                 y = str((mmm[akk]))
                                 global a
                                 a= a + y
                        if key == keyboard.Key.enter:
                                return False
                    except AttributeError:
                        print('err')
                        print('special key {0} pressed'.format(key))
            
            def on_release(key):
                a = '0'
            
            with keyboard.Listener(
                    on_press=on_press,
                    on_release=on_release) as listener:
                listener.join()
            
            listener = keyboard.Listener(
                on_press=on_press,
                on_release=on_release)
            listener.start()
            #print(a)
            
            e =(a.split())
            #print(e)
            for i in e:
                u = str((nam[i]))
                t = t + u
            print(t)
                
            
            
            תגובה 1 תגובה אחרונה
            1
            תגובה
            • תגובה כנושא
            התחברו כדי לפרסם תגובה
            • מהישן לחדש
            • מהחדש לישן
            • הכי הרבה הצבעות


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

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

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