4 svar
71 visningar
KaffeUtanMjolk behöver inte mer hjälp
KaffeUtanMjolk 22
Postad: 19 okt 22:05

Lista till fil

Hej, hittar inte vad felet finns. Namn ska samlas i lista, men i filen finns bara det senaste namnet som lagts till

import random

def ask_name():
   names = []

   morenames = True
   while morenames == True: 
       name = input('Insert a name:')
       names.append(name)
      
       more = input('Add more names(y=yes):').lower()
       if more not in [ 'y','yes','yeah']:
           morenames = False
   return names


def income():
    born_lucky = random.randint(1,100)
    if born_lucky == 1:
        yearly_income = random.randint(200000, 10000000)

    yearly_income = random.randint(0, 200000)
    return yearly_income

def main():
    names = ask_name()
    

    NYC_boroughs = ['Homeless', 'Bronx', 'Brooklyn', 'Manhattan', 'Queens', 'Staten Island']
    with open ('wholiveshere.txt', 'w') as file:
        for name in names:
            yearly_income = income()
            
        

    
            if yearly_income <= 20000:
                index = 0
            elif yearly_income <= 60000:
                index = 1
            elif yearly_income <= 110000:
                index = 4
            elif yearly_income <= 130000:
                index = 2
            elif yearly_income <= 300000:
                index = 5
            else:
                index = 3
        home = NYC_boroughs[index]
        file.write(f'{name}: Your home is {home} and your yearly salary is USD {yearly_income:,}\n')
    




if __name__ == '__main__':
    main()

naytte 4852 – Moderator
Postad: 19 okt 22:15 Redigerad: 19 okt 22:34

Har bara skummat koden lite, men det är sannolikt sista raden där du använder write()-metoden som orsakar problem. När man använder den skriver man över det som redan finns i filen (tror jag!). Så istället för att lägga till namnen så lägger du till dem och skriver över de förra.

thedifference Online 341
Postad: 19 okt 22:28

Indenteringen är även fel. Du lägger bara till i filen en gång, efter att for loopen är över. Inte för varje iteration.

ThomasN 1977
Postad: 19 okt 23:09

Om du använder 'a' (append) i stället för 'w' så skrivs det nog inte över.

Calle_K 2276
Postad: 19 okt 23:35

Dessutom bör du se över funktionen income.

Just nu skriver du över variabeln yearly_income, oavsett om den tidigare if-satsen körs eller ej.

Svara
Close