模块化程序设计是指在进行程序设计时将一个大的程序按照功能划分为若干小程序模块,每个小程序模块完成一个确定的功能,并在这些模块之间建立必要的联系,通过模块的互相协作完成整个功能。
请使用模块化程序设计方法完成进制转换,即:给你一个十进制数a(-65535<a<= 65535),将它转换成b(2 <= b <= 16)进制数输出。用大写字母A~F分别表示10~15(10用A表示,11用B表示......)。
要求:将虚线下的代码复制到答题区域、补充完善后再提交。
-------------------------------------------------------------------------------------------------------------------------
下面的函数求参数a的符号位并以字符串类型返回,‘-’表示负数,空串表示正数
def getSign(a):
#你需要完善getSign函数
下面的函数求整数absA的b进制表示,返回字符串
def getString(absA,b):
#你需要完善getString函数
a=int(input())
b=int(input())
mark=getSign(a)
bitString=getString(abs(a),b)
print(mark+bitString)
输入格式:
分两行分别输入a和b。
例如:
255
16
输出格式:
转换后的位串。
例如:
FF
输入样例:
在这里给出一组输入。例如:
13
2
输出样例:
在这里给出相应的输出。例如:
1101
大家可以先看看最开始的一种
def getSign(a):
return '-' if a < 0 else ''
def getString(absA, b):
if absA==0:
return '0'
result = ''
while absA > 0:
t = absA % b
if t < 10:
result = str(t) + result
else:
result = chr(ord('A') + t- 10) + result
absA //= b
return result
def main():
a = int(input())
b = int(input())
mark=getSign(a)
bitString = getString(abs(a), b)
print(mark + bitString)
main()
可以发现有一项会不通过(这时一般都是边界的问题)
这时大家应考虑边界值0的存在
修改后
def getSign(a):
return '-' if a < 0 else ''
def getString(absA, b):
if absA==0:
return '0'
result = ''
while absA > 0:
t = absA % b
if t < 10:
result = str(t) + result
else:
result = chr(ord('A') + t- 10) + result
absA //= b
return result
def main():
a = int(input())
b = int(input())
mark=getSign(a)
bitString = getString(abs(a), b)
print(mark + bitString)
main()