Here’s the way to translate any Sage program to Python. From https://groups.google.com/d/msg/sage-support/ZtlmX3zE0b8/cdecLnbUAwAJ:
The key are these: from sage.all import * def sage_parse(expr): '''exec a sage expression in globals ''' expr_str = preparse(expr) # print to show what's run print(expr_str) exec(expr_str, globals()) Example (taken from https://groups.google.com/d/msg/sage-support/ZtlmX3zE0b8/mqmG5KuiEgAJ): Sage program: R.<x> = QQ[] K = R.fraction_field() H.<i,j,k> = QuaternionAlgebra(K, -1, -1)def Q(a, b, c, d): return H(a + b*i + c*j + d*k)@cached_functiondef P(n): return Q(x+1,1,1,1)*P(n-1) if n > 0 else Q(1,0,0,0)def p(n): return P(n)[0].numerator().list()for n in (0..20): print [n], p(n) Python translation: (grey boxes are the stdouts) from sage.all import * def sage_parse(expr): '''exec a sage expression in globals ''' expr_str = preparse(expr) # print to show what's run print(expr_str) exec(expr_str, globals()) sage_parse('R.<x> = QQ[]') R = QQ['x']; (x,) = R._first_ngens(1) K = R.fraction_field() sage_parse('H.<i,j,k> = QuaternionAlgebra(K, -1, -1)') H = QuaternionAlgebra(K, -Integer(1), -Integer(1), names=('i', 'j', 'k',)); (i, j, k,) = H._first_ngens(3) def Q(a, b, c, d): return H(a + b * i + c * j + d * k) @cached_functiondef P(n): return Q(x + 1, 1, 1, 1) * P(n - 1) if n > 0 else Q(1, 0, 0, 0) def p(n): return P(n)[0].numerator().list() for n in range(21): print [n], p(n) [0] [1] [1] [1, 1] [2] [-2, 2, 1] [3] [-8, -6, 3, 1] [4] [-8, -32, -12, 4, 1] [5] [16, -40, -80, -20, 5, 1] [6] [64, 96, -120, -160, -30, 6, 1] [7] [64, 448, 336, -280, -280, -42, 7, 1] [8] [-128, 512, 1792, 896, -560, -448, -56, 8, 1] [9] [-512, -1152, 2304, 5376, 2016, -1008, -672, -72, 9, 1] [10] [-512, -5120, -5760, 7680, 13440, 4032, -1680, -960, -90, 10, 1] [11] [1024, -5632, -28160, -21120, 21120, 29568, 7392, -2640, -1320, -110, 11, 1] [12] [4096, 12288, -33792, -112640, -63360, 50688, 59136, 12672, -3960, -1760, -132, 12, 1] [13] [4096, 53248, 79872, -146432, -366080, -164736, 109824, 109824, 20592, -5720, -2288, -156, 13, 1] [14] [-8192, 57344, 372736, 372736, -512512, -1025024, -384384, 219648, 192192, 32032, -8008, -2912, -182, 14, 1] [15] [-32768, -122880, 430080, 1863680, 1397760, -1537536, -2562560, -823680, 411840, 320320, 48048, -10920, -3640, -210, 15, 1] [16] [-32768, -524288, -983040, 2293760, 7454720, 4472832, -4100096, -5857280, -1647360, 732160, 512512, 69888, -14560, -4480, -240, 16, 1] [17] [65536, -557056, -4456448, -5570560, 9748480, 25346048, 12673024, -9957376, -12446720, -3111680, 1244672, 792064, 99008, -19040, -5440, -272, 17, 1] [18] [262144, 1179648, -5013504, -26738688, -25067520, 35094528, 76038144, 32587776, -22404096, -24893440, -5601024, 2036736, 1188096, 137088, -24480, -6528, -306, 18, 1] [19] [262144, 4980736, 11206656, -31752192, -127008768, -95256576, 111132672, 206389248, 77395968, -47297536, -47297536, -9674496, 3224832, 1736448, 186048, -31008, -7752, -342, 19, 1] [20] [-524288, 5242880, 49807360, 74711040, -158760960, -508035072, -317521920, 317521920, 515973120, 171991040, -94595072, -85995520, -16124160, 4961280, 2480640, 248064, -38760, -9120, -380, 20, 1] Interested in adding this to the documentation / FAQ? It just wasn’t very clear in the FAQ. -- You received this message because you are subscribed to the Google Groups "sage-support" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-support+unsubscr...@googlegroups.com. To post to this group, send email to sage-support@googlegroups.com. Visit this group at https://groups.google.com/group/sage-support. For more options, visit https://groups.google.com/d/optout.