Skip to content

Instantly share code, notes, and snippets.

@orjanv
Last active July 22, 2021 13:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save orjanv/0193fe2f7f6ab3907d918091a95f71da to your computer and use it in GitHub Desktop.
Save orjanv/0193fe2f7f6ab3907d918091a95f71da to your computer and use it in GitHub Desktop.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Hvis kvadratroten av et gitt tall er det samme som antall bokstaver i tallordet,
# kaller vi tallet for et kvadratrotord.
#
# Kjør scriptet med en nedre og øvre grense å teste på norsk eller engelsk, for eksempel slik:
#
# $ ./python3 finn_kvadratrotord.py 10 1000 norsk
# $ ./python3 finn_kvadratrotord.py 1000 1000000 engelsk
from num2words import num2words
import sys
def sjekk_tall(tall, tallord_språk):
# Gjør om tallet til tallord med num2words-modulen
tall_ord = num2words(tall, lang=tallord_språk)
# Vi ønsker bare å telle vanlige bokstaver i tallordet, ikke bindestrek og comma
gyldige_tegn = [character for character in tall_ord if character.isalpha()]
antall_bokstaver = len(''.join(gyldige_tegn))
# Er det et kvadratord?
if int(tall) == antall_bokstaver ** 2:
print(f"{tall_ord} ({tall}) er et kvadratrotord fordi {antall_bokstaver} er kvadratroten av {tall}")
try:
nedre = int(sys.argv[1])
øvre = int(sys.argv[2])
språk = sys.argv[3]
if språk == 'norsk':
tallord_språk = 'no'
elif språk == 'engelsk':
tallord_språk = 'en'
except:
print("Du må gi en nedre og øvre grense å teste mot, og et språk, for eksempel slik: $ ./python3 finn_kvadratrotord.py 10 1000 norsk\n")
print(f"\nSjekker for kvadratrotord mellom {nedre} og {øvre} på {språk}:\n")
for i in range(nedre,øvre,1):
sjekk_tall(i, tallord_språk)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment