Plutonic Rainbows

Struggling with Blockchain

Lots of this code doesn’t make sense and I am finding it a struggle to remember what comes next. I think the way to approach it is to perhaps map out the steps I need to take; otherwise it just seems like a convoluted mess. I also need to look at lists again. Onwards and upwards.


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 = 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( + 
    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,, "Genesis Block", "0")
def next_block(last_block):
  this_index = last_block.index + 1
  this_timestamp =
  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)
  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)


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.


New Words

Artificial Intelligence: 人工知能.

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

Neural Network (such as 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."
		print "Wrong."

Week 11

Next week’s work will be solely Japanese; namely Kanji and sentence construction. I’m also going to try and get a short story finished. A busy week ahead.

Calculations and New Job

Started a new job today. Wrapping up this week’s work with Python revision, so here’s a simple division calculator using (float(raw_input(">"))) to get user input. I also use \n to create clean lines when terminal gives you the results.

def division(value_1, value_2):
	print "\nDividing %d / %d\n" % (value_1, value_2)
	return value_1 / value_2
value_1 = (float(raw_input(">")))
value_2 = (float(raw_input(">")))
result = division(value_1, value_2)

print "\nThe answer is %d.\n" % (result)

Putting Loops and Lists together

This seems like a lot of code (at least for a beginner like me), but it uses loops and lists so that the user can navigate around with varying outcomes.

from sys import exit

def money_room():
	print "There's plenty of money here. How much do you take?"
	next = raw_input("> ")
	if "0" in next or "1" in next:
		how_much = int(next)
		dead("Please type in something useful.")
	if how_much < 50:
		print "Nice. You're not greedy. You win!"
		dead("You are greedy. You lose.")
def guard_room():
	print "There is a guard here."
	print "The guard has a magazine and is reading it."
	print "The guard is stood in front of a door."
	print "How are you going to get rid of the guard?"
	guard_moved = False
	while True:
		next = raw_input("> ")
		if next == "take magazine":
			dead("The guard takes out his gun and you're toast.")
		elif next == "distract guard" and not guard_moved:
			print "The guard has moved from the door. You can go through it now."
			guard_moved = True
		elif next == "distract guard" and guard_moved:
			dead("The guard gets annoyed and pulls out a gun. You know how this ends.")
		elif next == "open door" and guard_moved:
			print "I have no idea what that means."
def insanity_room():
	print "What is this place?"
	print "It is the room of insanity."
	print "Do you run for your life or simply bash your head against the wall  ."
	next = raw_input("> ")
	if "run" in next:
	elif "head" in next:
		dead("Well, that's the end of you.")
	elif "bash" in next:
		dead("Well, that's the end of you.")
def dead(why):
	print why, "Good Job!"
def start():
	print "You are in a dark room."
	print "There is a door to right and left."
	print "Which one do you take?"
	next = raw_input("> ")
	if next == "left":
	elif next == "right":
		dead("You stumble around the room until you are dead.")

While Loops

while loops are a good deal more difficult as you have to visualise what is actually happening. One condition will keep running potentially forever until that condition is no longer met. The script below appends numbers to a list and stops doing so when the value is equal to or greater than 6.

i = 0

numbers = []

while i < 7:
	print "The number at the top is now: %d" % i
	i = i + 1
	print "Numbers are now", numbers
	print "The number at the bottom is now: %d" % i
print "The numbers:"

for num in numbers:
	print num