J'essaie d'apprendre python et j'ai essayé de convertir un extrait de code en js en python. J'ai créé une fonction dans js pour calculer GCD comme suit :

// program to find the GCD of two integers

let gcd

function GCD() {
// take input
const number1 = prompt('Enter a first positive integer: ')
const number2 = prompt('Enter a second positive integer: ')

// looping from 1 to number1 and number2
for (let i = 1; i <= number1 && i <= number2; i++) {

    if( number1 % i == 0 && number2 % i == 0) {
        gcd = i
    }
}

// display the gcd
document.write(`GCD of ${number1} and ${number2} is ${gcd}.`)
}

GCD()

Si je fournis le premier entier comme 9 et le deuxième entier sur 3, j'obtiens le PGCD comme 3.

J'ai essayé de convertir ceci en un programme python comme suit :

def gcd():
    gcd = 0

    num1 = int(input("Enter a first positive integer: "))
    num2 = int(input("Enter a second positive integer: "))
    
    for i in range(1, i<=num1 and i<=num2):
        if num1 % i == 0 and num2 % i == 0:
            gcd = i

    print(f"GCD of: {num1} and: {num2} is {gcd}")


gcd()

Mais je ne sais pas comment obtenir la boucle for en python tout à fait correctement. Si je change l'instruction for en :

def gcd():
    gcd = 0

    num1 = int(input("Enter a first positive integer: "))
    num2 = int(input("Enter a second positive integer: "))

    for i in range(1, num1 and num2):
        if num1 % i == 0 and num2 % i == 0:
            gcd = i

    print(f"GCD of: {num1} and: {num2} is {gcd}")


gcd()

Et je donne la même entrée qu'avant de 9 et 3, j'obtiens GCD de 1

0
user2371684 21 mars 2021 à 13:39

2 réponses

Meilleure réponse

Vous ne pouvez pas avoir une syntaxe équivalente à i <= number1 && i <= number2 car il s'agit d'une expression booléenne qui fonctionne comme une condition d'arrêt qui est vérifiée à chaque itération.

Alors qu'une boucle for en code python génère des valeurs avec des limites, pour faire de même, itérez jusqu'à la valeur la plus basse :

for i in range(1, min(num1, num2) + 1):
    if num1 % i == 0 and num2 % i == 0:
        gcd = i

Pour utiliser la condition du code JS, vous avez besoin d'une boucle while :

i = 1
while i <= num1 and i <= num2:
    if num1 % i == 0 and num2 % i == 0:
        gcd = i
    i += 1
2
khelwood 21 mars 2021 à 12:23

C'est une solution basée sur la boucle while

def gcd():
    gcd=0
    num1 = int(input("Enter a first positive integer: "))
    num2 = int(input("Enter a second positive integer: "))
    i = 1
    while(i <= num1 and i <= num2):
        if(num1 % i == 0 and num2 % i == 0):
            gcd = i
        i = i + 1
    print("GCD : ", gcd)

gcd()
0
odaiwa 21 mars 2021 à 10:50