2015-10-27 2 views
-1
import random 

def main(): 
    random1 = random.randrange(10,21,1) 
    create_file(random1) 
    process_file() 

def create_file(random1): 
    generate = open('random_numbers.txt','w') 
    for x in range(random1): 
     random2 = random.randrange(1,101,1) 
     generate.write(str(random2)+'/n') 
    generate.close() 

def process_file(): 
    generate = open('random_numbers.txt','r') 
    entries = 0 
    total = 0 
    for x in generate: 
     entries += 1 
     integer = int(x) 
     total = integer + total 
     mean= sum/entries 
    print("There are",(entries),"entries in the file.") 
    print("The sum total of all the entries is ",(total)) 
    print("The average of all the entries is ", format((mean),'.2f')) 
main() 

Cela continue à me donner cette erreur et je ne comprends pas pourquoi la valeur de l'entier ne fonctionne pas. J'ai essayé de réduire le integer=int(x)-integer = x mais je ne pouvais pas utiliser les x comme un entier et c'est un problème dans ce soibesoin d'un peu d'aide de quelqu'un qui comprend le code

Traceback (most recent call last): 
    File "U:\john oconnor lab 6.2.py", line 41, in <module> 
    main() 
    File "U:\john oconnor lab 6.2.py", line 20, in main 
    process_file() 
    File "U:\john oconnor lab 6.2.py", line 35, in process_file 
    number = int(x) 
ValueError: invalid literal for int() with base 10: '29/n59/n17/n2/n8/n14/n2/n14/n9/n21/n5/n25/n15/n47/n' 
+0

ajouter donc de retour dans l'appel à 'int'? –

Répondre

3
generate.write(str(random2)+'/n') 

Vous essayez d'écrire une nouvelle ligne à la fin il? Vous avez mal la séquence d'échappement.

generate.write(str(random2)+'\n') 

Cela devrait résoudre le problème dans process_file, puisque « random_numbers.txt » sera maintenant rempli de chiffres séparés sur leurs propres lignes individuelles, plutôt que d'être des chiffres séparés par une barre oblique et la lettre N.


en outre, cette ligne:

mean= sum/entries 

Si utiliser la total variable au lieu de la fonction intégrée sum.

mean= total/entries 
+0

dieu dieu, je ferais vraiment une erreur stupide comme ça. Merci pour l'aide man, même si c'était très simple –

0

Lorsque vous faites cela for x in generate: vous obtenez chaque ligne de votre fichier. Donc, comme vous le savez, chaque ligne de votre fichier est quelque chose comme '15 \ n 'ou '67 \ n'.

Vous devriez faire ceci:

for x in generate: 
    entries += 1 
    x = x.strip() 
    integer = int(x) 
    total = integer + total 
    mean= sum/entries 

x.strip() éliminera le terme '\ n' de chaque ligne.

aussi faire attention à la différence entre « \ n » et «/n »

+0

'int' ignore les espaces de début et de fin, donc' .strip() 'n'aurait aucun effet. Le vrai problème est le '/ n'. – DSM