2013-06-14 4 views
6

En essayant de convertir un programme que j'ai fait en Basic! (QBASIC sur iOS) à Python. Je travaille lentement à travers Python for Dummies mais je suis bloqué sur la façon de convertir FOR boucles. Quelqu'un peut-il aider? Bellow est le code QB.Convertir un programme de QBasic en Python

REM Prime Numbers v2 

REM Av 2.2 seconds for 1000 
REM Av 5.3 seconds for 2000 

INPUT "Prime numbers upto";limit 
PRINT 
t1 = TickCount 
PRINT "2 3 "; 
count = 2 
FOR posprime = 3 TO limit STEP 2 
    posfactor = 3 
    prime = 1 
    GOSUB testing 
    IF prime = 1 THEN 
     PRINT posprime " "; 
     count = count + 1 
    END IF 
NEXT posprime 
t2 = TickCount 
PRINT 
PRINT 
PRINT count " prime numbers found" 
PRINT USING "####.#"; "Completed in" t2 - t1 " seconds" 
END 

testing: 
IF posprime/posfactor = INT(posprime/posfactor) THEN 
    prime = 0 
    RETURN 
ELSE 
    posfactor = posfactor + 2 
    IF posfactor > SQR(posprime) THEN 
     RETURN 
    ELSE 
     GOTO testing 

C'est un programme que mon fils et moi avons fait sur Basic! (QBasic pour iOS) qui affiche tous les nombres premiers jusqu'à la limite entrée par l'utilisateur avec des parties ajoutées qui ignorent les nombres non premiers évidents. Oh, et cela inclut un petit contrôle de vitesse que nous avons utilisé pour voir la différence entre les processeurs iPhone et iPad.

Répondre

4
FOR posprime = 3 TO limit STEP 2 

Au-dessus de la ligne pourrait être traduit en code suivant Python (limite exclusive):

for posprime in range(3, limit, 2): 

http://docs.python.org/2/library/functions.html#range

+1

Il doit aller de limiter + 1: gamme (3, limite + 1, 2) –

+1

Merci pour les réponses. Donc, la limite supérieure de la plage est jusqu'à, mais ne comprend pas, nécessitant donc la limite + 1? – BlackDuke07

+1

@ user2486954, Oui. – falsetru

Questions connexes