Execute HQ9+/Python: Difference between revisions

no edit summary
(added + operator)
imported>Katsumi
No edit summary
 
(6 intermediate revisions by 6 users not shown)
Line 1:
{{collection|RCHQ9+}}{{implementation|HQ9+}}
 
This [[Python]] example implements 'H', 'Q', '9' and '+'.
 
<syntaxhighlight lang="python">
The author does not explains what '+' exactly do. I just increased a "acc" variable.
<lang python>import sys
 
<lang python>import sys
 
def hello():
print ("Hello, world!")
 
def quine():
print (src)
 
def bottles():
for i in range(99,2,-1):
print ("%d bottles of beer on the wall" % i)
print ("%d bottles of beer" % i)
print ("Take one down, pass it around")
print ("%d bottles of beer on the wall" % (i-1))
print()
 
print ("2 bottles of beer on the wall")
print ("2 bottles of beer")
print ("Take one down, pass it around")
print ("1 bottle of beer on the wall")
print()
 
print ("1 bottle of beer on the wall")
print ("1 bottle of beer")
print ("Take one down, pass it around")
print ("No more bottles of beer on the wall")
print()
 
print ("No more bottles of beer on the wall")
print ("No more bottles of beer on the wall")
print ("Go to the store and buy some more")
print ("99 bottles of beer on the wall.")
print ()
 
def incr():
acc += 1 # ?
 
if len(sys.argv) != 2:
print ("Usage: ./hq9p.py script.hq9")
sys.exit(1)
else:
Line 48 ⟶ 50:
s = open(f,"r")
except IOError, e:
print ("Can't open file: " + str(e.args[1]))
sys.exit(1)
 
acc = 0
src = s.read()
 
# Implement interpreter using a dispatch table
dispatch = {
'h': hello,
'q': quine(),
'9': bottles(),
'+': incr
else: }
 
for i in src.lower():
if i ==in 'h'dispatch:
hellodispatch[i]()
</syntaxhighlight>
elif i == 'q':
quine()
elif i == '9':
bottles()
elif i == '+':
acc += 1 # ?
else:
pass # It's a comment, ignore it.</lang>
Anonymous user