I am learning both Greek and Python right now, so I decided to make a simple program that quizzes you on the translations by providing it in Greek and asking for English, and if you provide the English, it will output the Greek if it is in the dictionary.

Feel free to take and modify this for your own uses if interested! It would be as simple as replacing the Greek dictionary and references with anything else. :)

import random, sys

greekTranslation = {
    'Γεια σας': 'Hello',
    'Καλημέρα': 'Good morning',
    'Καλησπέρα': 'Good evening',
    'Ευχαριστώ': 'Thank you',
    'Παρακαλώ': 'Please',}

def practiceGreek():
    greekPhrase = random.choice(list(greekTranslation.keys()))
    print('')
    print(f'What is the translation of "{greekPhrase}"?')
    print('')
    answer = input('Your answer: ')
    if answer.strip().lower() == greekTranslation[greekPhrase].lower():
        print('')
        print('That is correct!')
        print('')
    else:
        print('')
        print(f'Incorrect! The correct translation is "{greekTranslation[greekPhrase]}".')
        print('')

def translateToGreek():
    print('')
    print('What would you like to translate into Greek?')
    print('')
    englishPhrase = input().strip().lower()
    reverseTranslation = {v.lower(): k for k, v in greekTranslation.items()}
    greekPhrase = reverseTranslation.get(englishPhrase)
    
    if greekPhrase:
        print('')
        print(f'The Greek phrase is: "{greekPhrase}"')
        print('')
    else:
        print('')
        print('I am sorry, I don\'t have that in my dictionary.')
        print('')
    
        
while True:
    print('Welcome to the Greek Practice Program!')
    print('')
    print('What would you like to do?')
    print('')
    print('[Practice] [Translate] [Exit]')
    print('')
    optionSelection = input().strip().lower()
        
    if optionSelection != 'practice' and optionSelection != 'translate' and \
       optionSelection != 'exit':
        print('')
        print('Please select either practice, translate, or exit')
        optionSelection = ''
        print('')

    if optionSelection == 'practice':
        while optionSelection == 'practice':
            practiceGreek()
            print('')
            print('Would you like another? [yes] [no]')
            print('')
            selection = input().strip().lower()
            if selection == 'yes':
                print('')
                continue
            else:
                print('')
                break
                
            
    elif optionSelection == 'translate':
        while optionSelection == 'translate':
            translateToGreek()
            print('')
            print('Would you like to translate another phrase? [yes] [no]')
            print('')
            selection = input().strip().lower()
            if selection == 'yes':
                print('')
                continue
            else:
                print('')
                break
        
    
    elif optionSelection == 'exit':
        print('')
        print('Thank you for using the Greek Practice Program!')
        print('')
        sys.exit()

  • MarauderIIC@lemmy.zip
    link
    fedilink
    arrow-up
    6
    ·
    10 days ago

    Hi! Looks ok. Since you’re learning still, I recommend running this code through pylint and black. You can search for ‘python black’ and ‘python pylint’ for more details on those.

    • Arkouda@lemmy.caOP
      link
      fedilink
      arrow-up
      5
      ·
      10 days ago

      Thank you for looking it over!

      I run my code using the idle python shell while I write, and then directly through my terminal when they are finished.

      What benefit does running them through pylint or black offer?

      • ImplyingImplications@lemmy.ca
        link
        fedilink
        arrow-up
        5
        ·
        10 days ago

        They’re both “linters”. They analyze your code without executing it, known as “static analysis”, and highlight logical and stylistic errors.

        Pylint will give you warnings if you try to feed a variable that holds an integer into a function that works on strings or if you deviate from python’s suggested style guide. Python doesn’t check data types until you actually run your code, so errors with data types won’t be caught until your program crashes. Using pylint allows you to get warnings before actually executing your code. Note that Python allows for type hinting which allows you to tell linters what data types variables and functions are allowed to be. Python itself ignores type hints when executing code.

        Black automatically formats your code to adhere to Python’s suggested style guide. Unlike something like Pylint, it cannot be configured to ignore certain style rules. All projects using Black will have the same style. Python gives a lot of leeway in how you can format valid code, but it’s difficult for programmers to read code in dozens of different styles. Most languages have come up with their own style guide. For example, your first line does not match the suggested style. All imports should be on their own line. If you don’t want to remeber all the rules yourself, you can use Black to format your code in a way everyone is agreeable with.

        • Arkouda@lemmy.caOP
          link
          fedilink
          arrow-up
          4
          ·
          10 days ago

          Sounds to me like if someone doesn’t like my code, they have options! haha

          I will likely look into things like that as I get more of my code out there, and I appreciate you taking the time to explain it.

          I do see the point of the style guide, and I am learning it over time, but I will die on the hill of camelCase. haha