如何将循环输出的整数拼接为指定格式的字符串?——八进制转十进制后重组字符串的实现问题
解决八进制转十进制后重新拼接字符串的问题
我明白你的困扰啦——你需要把多个八进制数字字符串转成十进制后,按原格式(空格分隔)拼接成一个完整的带引号字符串,但之前用join的方式不对,导致输出结果完全不符合预期。
问题出在哪?
你之前尝试的" ".join(str(c))是把单个十进制数字的字符串形式拆成单个字符,再用空格连接,比如str(80)是"80",用这个方法会变成"8 0",这就是你得到乱序字符输出的原因。另外,你之前在循环里直接打印每个结果,虽然数字是对的,但它们是分开输出的,并非一个完整的字符串。
修正后的代码思路
- 先拆分输入字符串,得到独立的八进制数字列表
- 遍历每个数字,转换为十进制后转成字符串,统一收集到一个结果列表里
- 用指定的分隔符(这里是空格)把列表里的所有字符串拼接成一个整体
- 最后加上引号输出(如果不需要引号可以直接去掉)
完整修正代码
dataset = "120 156 206" # Testing sample delimiter = " " if delimiter in dataset: # 拆分输入字符串,得到八进制数字的列表 octal_numbers = dataset.split(delimiter) # 批量转换:每个八进制数字转十进制后转字符串,存入列表 decimal_strings = [str(int(num, base=8)) for num in octal_numbers] # 用空格拼接成完整字符串,再包裹引号 result = f'"{" ".join(decimal_strings)}"' print(result) else: # 单个数字的情况,转十进制后转字符串并包裹引号 decimal_num = int(dataset, base=8) result = f'"{decimal_num}"' print(result)
测试结果
运行这段代码后,输出正好是你期望的:
"80 110 134"
如果不需要输出带引号,直接去掉f'"{...}"'里的引号,输出" ".join(decimal_strings)即可。
内容的提问来源于stack exchange,提问作者Mike Calvert
相关产品推荐
相关产品推荐

