Я хочу превратить параметр «интересов» в кортеж или список.Пользователь должен иметь возможность ввести много интересов и решить, когда останавливаться с помощью флага, такого как 'active = True'
Я не уверен, как пользователь собирается установить active=True
, ноостальная часть этого предложения просто кричит «Я хочу цикл»:
@classmethod
def get_userinfo(cls):
first = raw_input("Welcome. PLease Enter Your First Name: ")
last = raw_input("Please Enter Your Last Name: ")
user = raw_input("Username: ")
location = raw_input("What is your location? : ")
interests = []
print("List some of your interests (just type Return on its own when you're done)")
while True:
interest = raw_input().strip()
if not interest:
break
interests.append(interest)
ОК, это дает нам список, а не кортеж.Мы могли бы создать кортеж, выполнив interests = interests + (interest,)
, но это неуклюже и неэффективно.Если вам действительно нужен кортеж, на самом деле проще просто создать список и затем преобразовать его в конце:
interests = tuple(interests)
И теперь мы можем передать все эти переменные в конструктор:
return cls(first, last, user, location, interests)
… и, наконец, вернуть результаты в виде строки, чтобы можно было записать их в файл.
Hold on;какой тип файла вы здесь создаете?
Если этот файл предназначен для чтения и редактирования человеком и никогда больше не просматривается Python, это легко.Вы можете, например, просто join
заполнить их пробелами, запятыми, символами новой строки или чем угодно.Или вы можете вручную зациклить их, чтобы сделать их более причудливыми:
def write_to_file(self, filename):
with open(filename, 'w') as file:
file.write('First Name: {}\n'.format(self.first_name))
file.write('Last Name: {}\n'.format(self.last_name))
file.write('Username: {}\n'.format(self.username))
file.write('Location: {}\n'.format(self.location))
file.write('Interests:\n')
for interest in self.interests:
file.write(' {}\n'.format(interest))
Но если он предназначен для хранения данных, которые будут позже прочитаны Python, вы захотите записать вещи в формате, который предназначен длябыть разобраннымВозможно, добавьте метод для сериализации ваших объектов в JSON и из него, например:
def to_json(self):
return json.dumps({'first': self.first_name, 'last': self.last_name,
'user': self.username, 'location': self.location,
'interests': self.interests})
@classmethod
def from_json(cls, j):
dct = json.loads(j)
return cls(dct['first'], dct['last'], dct['user'],
dct['location'], dct['interests'])
А теперь, чтобы записать его в файл:
with open(filename, 'w') as f:
f.write(user.to_json())