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()
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.
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.
Om du använder 'a' (append) i stället för 'w' så skrivs det nog inte över.
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.