|
"""
来自 https://bbs.pythontab.com/thread-39894-1-1.html
"""
def print_fracti**(n1, n2):
"""
输入2数 以分数的形式在控制台打印来
比如
3 2
--- 2-
100 3
百分之三 2又3分之2
:param n1:
:param n2:
:return:
"""
common_divisor = max_common_divisor(n1, n2)
# 简化结果 n1 / common_divisor 比如 30 / 10 =3
m1 = int(n1 / common_divisor)
m2 = int(n2 / common_divisor)
if m1 > m2:
# 商 26÷8=3 2 被除数÷除数=商 余数 24=被除数 8=除数 3=商 2=余数
quotient = m1 // m2
# 余数
remainder = m1 % m2
# 最长部分的字符
max_char_length = len(str(quotient)) + len(str(m2))
# 打印第一行
print_number(remainder, max_char_length)
# 打印第二行
print_dividers_and_quotient(quotient, max_char_length)
# 打印第三行
print_number(m2, max_char_length)
else:
# 最长部分的字符
max_char_length = len(str(m2))
# 打印第一行
print_number(m1, max_char_length)
# 打印第二行
print_dividers(max_char_length)
# 打印第三行
print_number(m2, max_char_length)
def print_number(number, max_char_length):
"""
打印数字
:param number: 被打印数字
:param max_char_length: 长度
:return:
"""
for i in range(max_char_length - len(str(number))):
print(" ", end='')
print(number)
def print_dividers(max_char_length):
"""
打印分割符
:param max_char_length: 长度
:return:
"""
for i in range(max_char_length):
print("-", end='')
print()
def print_dividers_and_quotient(quotient, max_char_length):
"""
打印分割符和商
:param quotient: 商
:param max_char_length: 长度
:return:
"""
print("%d" % quotient, end='')
for i in range(max_char_length - len(str(quotient))):
print("-", end='')
print()
def max_common_divisor(a, b):
"""
求2数最大公约数 无顺序之分
:param a: 数1
:param b: 数2
:return: 最大公约数
"""
t = 1
for i in range(2, min(a, b)):
while a % i == 0 and b % i == 0:
t = t * i
a = a / i
b = b / i
return t
# 测试
print_fracti**(8, 3)
print_fracti**(3, 8)
|
|