class UserProfile:
def __init__(self, name, age, location, password):
self.name = name
self.age = age
self.location = location
self.password = password
self.friends = []
class ChatRoom:
def __init__(self, name):
self.name = name
self.users = []
def add_user(self, user):
self.users.append(user)
def encrypt_message(message):
encrypted = ""
for char in message:
if char.isalpha():
ascii_offset = 65 if char.isupper() else 97
encrypted += chr((ord(char) - ascii_offset + 13) % 26 + ascii_offset)
else:
encrypted += char
return encrypted
def exit_chat():
print("Exiting chat...")
return False
def handle_empty_messages(message):
if message == "":
print("Please enter a message.")
return True
return False
def send_emotions(message):
emotions = [":)", ":D", ";-)"]
for emotion in emotions:
if emotion in message:
print("Emotion detected!")
return message
def add_friend(profile, friend_name):
profile.friends.append(friend_name)
print(friend_name + " added to friends list.")
def view_friends(profile):
print("Friends:")
for friend in profile.friends:
print(friend)
user_profiles = [
UserProfile("John", 25, "NY", "john123"),
UserProfile("Alice", 30, "CA", "alice123"),
UserProfile("Bob", 35, "FL", "bob123"),
UserProfile("Mike", 20, "TX", "mike123"),
UserProfile("Emma", 28, "IL", "emma123")
]
chat_rooms = [
ChatRoom("Room1"),
ChatRoom("Room2"),
ChatRoom("Room3")
]
# Test the features
current_user = user_profiles[0]
add_friend(current_user, "David")
view_friends(current_user)
message = "Hello :)!"
if not handle_empty_messages(message):
encrypted_message = encrypt_message(message)
print("Encrypted message: " + encrypted_message)
send_emotions(message)
print("Chat rooms:")
for i, room in enumerate(chat_rooms):
print(str(i+1) + ". " + room.name)
exit_chat()
Y2xhc3MgVXNlclByb2ZpbGU6CiAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgYWdlLCBsb2NhdGlvbiwgcGFzc3dvcmQpOgogICAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAgICAgICBzZWxmLmFnZSA9IGFnZQogICAgICAgIHNlbGYubG9jYXRpb24gPSBsb2NhdGlvbgogICAgICAgIHNlbGYucGFzc3dvcmQgPSBwYXNzd29yZAogICAgICAgIHNlbGYuZnJpZW5kcyA9IFtdCgpjbGFzcyBDaGF0Um9vbToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgc2VsZi51c2VycyA9IFtdCgogICAgZGVmIGFkZF91c2VyKHNlbGYsIHVzZXIpOgogICAgICAgIHNlbGYudXNlcnMuYXBwZW5kKHVzZXIpCgpkZWYgZW5jcnlwdF9tZXNzYWdlKG1lc3NhZ2UpOgogICAgZW5jcnlwdGVkID0gIiIKICAgIGZvciBjaGFyIGluIG1lc3NhZ2U6CiAgICAgICAgaWYgY2hhci5pc2FscGhhKCk6CiAgICAgICAgICAgIGFzY2lpX29mZnNldCA9IDY1IGlmIGNoYXIuaXN1cHBlcigpIGVsc2UgOTcKICAgICAgICAgICAgZW5jcnlwdGVkICs9IGNocigob3JkKGNoYXIpIC0gYXNjaWlfb2Zmc2V0ICsgMTMpICUgMjYgKyBhc2NpaV9vZmZzZXQpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZW5jcnlwdGVkICs9IGNoYXIKICAgIHJldHVybiBlbmNyeXB0ZWQKCmRlZiBleGl0X2NoYXQoKToKICAgIHByaW50KCJFeGl0aW5nIGNoYXQuLi4iKQogICAgcmV0dXJuIEZhbHNlCgpkZWYgaGFuZGxlX2VtcHR5X21lc3NhZ2VzKG1lc3NhZ2UpOgogICAgaWYgbWVzc2FnZSA9PSAiIjoKICAgICAgICBwcmludCgiUGxlYXNlIGVudGVyIGEgbWVzc2FnZS4iKQogICAgICAgIHJldHVybiBUcnVlCiAgICByZXR1cm4gRmFsc2UKCmRlZiBzZW5kX2Vtb3Rpb25zKG1lc3NhZ2UpOgogICAgZW1vdGlvbnMgPSBbIjopIiwgIjpEIiwgIjstKSJdCiAgICBmb3IgZW1vdGlvbiBpbiBlbW90aW9uczoKICAgICAgICBpZiBlbW90aW9uIGluIG1lc3NhZ2U6CiAgICAgICAgICAgIHByaW50KCJFbW90aW9uIGRldGVjdGVkISIpCiAgICAgICAgICAgIHJldHVybiBtZXNzYWdlCgpkZWYgYWRkX2ZyaWVuZChwcm9maWxlLCBmcmllbmRfbmFtZSk6CiAgICBwcm9maWxlLmZyaWVuZHMuYXBwZW5kKGZyaWVuZF9uYW1lKQogICAgcHJpbnQoZnJpZW5kX25hbWUgKyAiIGFkZGVkIHRvIGZyaWVuZHMgbGlzdC4iKQoKZGVmIHZpZXdfZnJpZW5kcyhwcm9maWxlKToKICAgIHByaW50KCJGcmllbmRzOiIpCiAgICBmb3IgZnJpZW5kIGluIHByb2ZpbGUuZnJpZW5kczoKICAgICAgICBwcmludChmcmllbmQpCgp1c2VyX3Byb2ZpbGVzID0gWwogICAgVXNlclByb2ZpbGUoIkpvaG4iLCAyNSwgIk5ZIiwgImpvaG4xMjMiKSwKICAgIFVzZXJQcm9maWxlKCJBbGljZSIsIDMwLCAiQ0EiLCAiYWxpY2UxMjMiKSwKICAgIFVzZXJQcm9maWxlKCJCb2IiLCAzNSwgIkZMIiwgImJvYjEyMyIpLAogICAgVXNlclByb2ZpbGUoIk1pa2UiLCAyMCwgIlRYIiwgIm1pa2UxMjMiKSwKICAgIFVzZXJQcm9maWxlKCJFbW1hIiwgMjgsICJJTCIsICJlbW1hMTIzIikKXQoKY2hhdF9yb29tcyA9IFsKICAgIENoYXRSb29tKCJSb29tMSIpLAogICAgQ2hhdFJvb20oIlJvb20yIiksCiAgICBDaGF0Um9vbSgiUm9vbTMiKQpdCgojIFRlc3QgdGhlIGZlYXR1cmVzCmN1cnJlbnRfdXNlciA9IHVzZXJfcHJvZmlsZXNbMF0KYWRkX2ZyaWVuZChjdXJyZW50X3VzZXIsICJEYXZpZCIpCnZpZXdfZnJpZW5kcyhjdXJyZW50X3VzZXIpCgptZXNzYWdlID0gIkhlbGxvIDopISIKaWYgbm90IGhhbmRsZV9lbXB0eV9tZXNzYWdlcyhtZXNzYWdlKToKICAgIGVuY3J5cHRlZF9tZXNzYWdlID0gZW5jcnlwdF9tZXNzYWdlKG1lc3NhZ2UpCiAgICBwcmludCgiRW5jcnlwdGVkIG1lc3NhZ2U6ICIgKyBlbmNyeXB0ZWRfbWVzc2FnZSkKICAgIHNlbmRfZW1vdGlvbnMobWVzc2FnZSkKCnByaW50KCJDaGF0IHJvb21zOiIpCmZvciBpLCByb29tIGluIGVudW1lcmF0ZShjaGF0X3Jvb21zKToKICAgIHByaW50KHN0cihpKzEpICsgIi4gIiArIHJvb20ubmFtZSkKCmV4aXRfY2hhdCgp