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

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

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

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

מתוזמן נעוץ נעול הועבר תכנות
5 פוסטים 4 כותבים 119 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • יצירהי מנותק
    יצירהי מנותק
    יצירה
    כתב ב נערך לאחרונה על ידי
    #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
    • chvC מנותק
      chvC מנותק
      chv
      השיב ליצירה ב נערך לאחרונה על ידי
      #2

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

      בלוג | מייל

      yossizY תגובה 1 תגובה אחרונה
      0
      • nigunN מנותק
        nigunN מנותק
        nigun
        השיב ליצירה ב נערך לאחרונה על ידי
        #3

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

        מייל: nigun@duck.com

        תגובה 1 תגובה אחרונה
        2
        • yossizY מנותק
          yossizY מנותק
          yossiz
          השיב לchv ב נערך לאחרונה על ידי yossiz
          #4

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

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

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

          יצירהי תגובה 1 תגובה אחרונה
          3
          • יצירהי מנותק
            יצירהי מנותק
            יצירה
            השיב לyossiz ב נערך לאחרונה על ידי יצירה
            #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
            • דף הבית
            • קטגוריות
            • פוסטים אחרונים
            • משתמשים
            • חיפוש
            • חוקי הפורום