编程新手求助:十进制转八进制Python代码编写问题
十进制转八进制代码修正及解释
先挑出你代码里的核心问题:
- 刚读取用户输入的
x,立刻把x赋值为0,直接丢掉了输入的原始数值 - 输入合法性判断逻辑错误:
l<1 and l<10000的逻辑永远不成立,应该判断数值不在1到10000之间,也就是l < 1 or l > 10000 - 打印函数拼写错误:是
print不是prin - 循环条件写反了:要转换正数的话,应该是
while l > 0,而不是l<0,否则循环根本不会执行 - 整数除法写错了:应该用
l = l // 8来取商,而不是int(1/8)(这会直接得到0)
修正后的代码:
# 读取输入并转为整数 x = int(input("请输入1到10000之间的十进制数:")) octal_str = "" temp = x # 保存原始数值用于循环计算 # 判断输入是否合法 if temp < 1 or temp > 10000: print("这个数字不符合要求!") else: # 循环取余构建八进制字符串 while temp > 0: remainder = temp % 8 octal_str = str(remainder) + octal_str temp = temp // 8 # 整数除法更新数值 print("转换后的八进制数是:", octal_str)
额外提一句:Python自带十进制转八进制的内置函数oct(),比如oct(10)会返回'0o12',如果不需要前面的0o前缀,用oct(x)[2:]就能直接得到纯数字的八进制字符串。不过作为初学者,手动实现一遍转换逻辑更能理解进制转换的原理。
内容的提问来源于stack exchange,提问作者recaliente85
相关产品推荐
相关产品推荐

