题目:
下列给定程序中函数fun的功能是:将一个由八进制数字字符组成的字符串转换成十进制整数。规定输入的字符串最多只能包含5位八进制数字字符。
请改正程序中的错误,使它能得出正确的结果。
原题目:
# -*- coding:cp936 -*-
'''------------------------------------------------------
【程序改错】
---------------------------------------------------------
题目:下列给定程序中函数fun的功能是:将一个由八进制数字
字符组成的字符串转换成十进制整数。规定输入的字符串最
多只能包含5位八进制数字字符。
请改正程序中的错误,使它能得出正确的结果。
例如:若输入77777,则输出32767。
---------------------------------------------------------
注意:不可以增加或删除程序行,也不可以更改程序的结构。
------------------------------------------------------'''
def fun(num):
length = len(num)
sum = 0
for i in range(length):
#**********FOUND**********
sum += 8 * i * int(num[length-1-i])
return sum
def main():
num = input("请输入一个8进制数,并按回车继续:")
#**********FOUND**********
if len(num)>=5:
print("错误: 不得大于5位八进制数字字符!\n")
exit(0)
for i in range(len(num)):
#**********FOUND**********
if num[i]<'0'and num[i]>'7':
print("错误: %s 不是一个八进制数字\n" %num[i])
exit(0)
print("转成10进制数为:",fun(num))
if __name__ == '__main__':
main()
改正后:
# -*- coding:cp936 -*-
'''------------------------------------------------------
【程序改错】
---------------------------------------------------------
题目:下列给定程序中函数fun的功能是:将一个由八进制数字
字符组成的字符串转换成十进制整数。规定输入的字符串最
多只能包含5位八进制数字字符。
请改正程序中的错误,使它能得出正确的结果。
例如:若输入77777,则输出32767。
---------------------------------------------------------
注意:不可以增加或删除程序行,也不可以更改程序的结构。
------------------------------------------------------'''
def fun(num):
length = len(num)
sum = 0
for i in range(length):
#**********FOUND**********
sum += (8**i) * int(num[length-1-i])
return sum
def main():
num = input("请输入一个8进制数,并按回车继续:")
#**********FOUND**********
if len(num)>5:
print("错误: 不得大于5位八进制数字字符!\n")
exit(0)
for i in range(len(num)):
#**********FOUND**********
if num[i]<'0'or num[i]>'7':
print("错误: %s 不是一个八进制数字\n" %num[i])
exit(0)
print("转成10进制数为:",fun(num))
if __name__ == '__main__':
main()
注意:
第二处错误
if len(num)>=5:
如果改为
if len(num)>6:
虽然程序可以正确运行,但是考试系统可能会判定错误