На странице представлен фрагмент

Реши любую задачу с помощью нейросети.

Шаги решения:
1. Создайте класс `User`, который будет представлять пользователей блокчейна. В этом классе создайте атрибуты для имени пользователя и суммы денег на его счету.
2. Создайте класс `Blockchain`, который будет представлять сам блокчейн. В этом классе создайте атрибуты для списка зарегистрированных пользователей и списка транзакций.
3. В классе `Blockchain` создайте методы для регистрации пользователя и добавления его в список зарегистрированных пользователей.
4. Также в классе `Blockchain` создайте метод `transaction`, который будет получать отправителя, получателя и сумму транзакции. Проверьте, что сумма транзакции не превышает 2000 рублей и у отправителя есть достаточно денег. Если условия выполняются, создайте хэш транзакции и добавьте ее в список транзакций.
5. В классе `Blockchain` создайте метод для показа хэша при транзакции. Этот метод должен принимать хэш транзакции и выводить его на экран.
6. Создайте функцию, которая будет показывать сумму денег у всех зарегистрированных пользователей. Пройдитесь по списку пользователей и выведите их имена и суммы денег на экран.
7. Создайте экземпляр класса `Blockchain` и добавьте функционал меню. Создайте бесконечный цикл, в котором будет предложено выбрать опцию из меню. Реализуйте логику для каждой опции, чтобы пользователь мог зарегистрироваться, выполнить транзакцию, получить хэш транзакции или увидеть сумму денег у всех пользователей.
8. Завершите цикл, если пользователь выбирает опцию “выход”.

Пример кода:
“`python
import hashlib

class User:
def __init__(self, name, balance):
self.name = name
self.balance = balance

class Blockchain:
def __init__(self):
self.users = []
self.transactions = []

def register_user(self, name, balance):
user = User(name, balance)
self.users.append(user)

def transaction(self, sender, receiver, amount):
sender_user = next((user for user in self.users if user.name == sender), None)
receiver_user = next((user for user in self.users if user.name == receiver), None)

if sender_user and receiver_user:
if amount <= 2000 and sender_user.balance >= amount:
sender_user.balance -= amount
receiver_user.balance += amount
transaction_hash = hashlib.sha256(f”{sender}-{receiver}-{amount}”.encode()).hexdigest()
self.transactions.append(transaction_hash)
return transaction_hash
else:
return “Ошибка транзакции”
else:
return “Пользователь не найден”

def transaction_hash(self, transaction):
print(transaction)

def show_balances(self):
for user in self.users:
print(f”{user.name}: {user.balance}”)

blockchain = Blockchain()

while True:
print(“Меню:”)
print(“1. Регистрация”)
print(“2. Транзакция”)
print(“3. Хэш транзакции”)
print(“4. Сумма денег пользователей”)
print(“5. Выход”)

option = input(“Выберите опцию: “)

if option == “1”:
name = input(“Введите имя пользователя: “)
balance = int(input(“Введите сумму денег: “))
blockchain.register_user(name, balance)
elif option == “2”:
sender = input(“Введите имя отправителя: “)
receiver = input(“Введите имя получателя: “)
amount = int(input(“Введите сумму транзакции: “))
transaction_hash = blockchain.transaction(sender, receiver, amount)
if transaction_hash:
print(f”Хэш транзакции: {transaction_hash}”)
else:
print(“Ошибка транзакции”)
elif option == “3”:
transaction = input(“Введите хэш транзакции: “)
blockchain.transaction_hash(transaction)
elif option == “4”:
blockchain.show_balances()
elif option == “5”:
break
“`
Этот код реализует простой блокчейн с меню функций для регистрации пользователей, выполнения транзакций, показа хэша транзакций и суммы денег у всех зарегистрированных пользователей. В зависимости от выбранной опции в меню, выполняется соответствующая функциональность блокчейна.