Plutonic Rainbows

Blockchain

This week I am working through a tutorial on creating a simple Blockchain. Some of the stuff, I don't yet understand but as I am following a separate course, this week's lesson is to look through sample code on the Internet.

import hashlib as hasher

class Block:
  def __init__(self, index, timestamp, data, previous_hash):
    self.index = index
    self.timestamp = timestamp
    self.data = data
    self.previous_hash = previous_hash
    self.hash = self.hash_block()

  def hash_block(self):
    sha = hasher.sha256()
    sha.update(str(self.index) + 
               str(self.timestamp) + 
               str(self.data) + 
               str(self.previous_hash))
    return sha.hexdigest()

import datetime as date

def create_genesis_block():
  # Manually construct a block with
  # index zero and arbitrary previous hash
  return Block(0, date.datetime.now(), "Genesis Block", "0")

def next_block(last_block):
  this_index = last_block.index + 1
  this_timestamp = date.datetime.now()
  this_data = "Hey! I'm block " + str(this_index)
  this_hash = last_block.hash
  return Block(this_index, this_timestamp, this_data, this_hash)

# Create the blockchain and add the genesis block
blockchain = [create_genesis_block()]
previous_block = blockchain[0]

# How many blocks should we add to the chain
# after the genesis block
num_of_blocks_to_add = 20

# Add blocks to the chain
for i in range(0, num_of_blocks_to_add):
  block_to_add = next_block(previous_block)
  blockchain.append(block_to_add)
  previous_block = block_to_add
  # Tell everyone about it!
  print "Block #{} has been added to the blockchain!".format(block_to_add.index)
  print "Hash: {}\n".format(block_to_add.hash)

Mastercard

Interest rates are high on credit cards. Use the script below to calculate what you are paying on an APR of 1.45%.

# -*- coding: utf-8 -*-

def percentage(balance, divide, interest):
    return balance / divide * interest

balance = (float(raw_input("\nEnter Balance: ")))

new_total = percentage(balance, 100, 1.45)

print "\nOn a balance of £{0:.2f} there is £{1:.2f} in interest.\n".format (balance, new_total)

Ikebukuro Owl Police Box

Atlas Obscura:

Since the police box is within a stone’s throw of Ikebukuro Station and very eye-catching, many people use it as a meeting point. It’s probably one of the safest meeting points in Tokyo, right next to police officers.

Link

New Words

Artificial Intelligence: 人工知能.

For example, 大学から2年間ぐらい人工知能を勉強しました。

Neural Network (i.e Python's Tensor Flow): ニューラルネットワーク.

Machine Learning: 機械学習.

For example, 21世紀に機械学習の問題は増えます.

While Loop & Exit

A simple script that asks a user to guess the number. It uses a while loop that will continue to ask for user input until the condition is met. We then use exit() to break the loop.

from sys import exit

while True:
    print "Try and guess the number."
    guess = raw_input("> ")

    if guess == "7":
            print "You guessed correctly."
            exit(0)

    else:
        print "Wrong."