Python两数交换实验输出出现前导0,求问题原因排查
问题分析与解决
问题根源
你代码里的输入写法完全错误:input(int())不是正确获取数字输入的方式,这才导致了前导零的出现。
具体执行流程:
- 程序先执行
int(),触发一次输入请求,你输入的3会被int()转为整数但不会被保存 - 随后
input()把int()返回的3当作提示文本,此时你输入的008会以字符串形式赋值给input_val1,前导零被原样保留 - 接着程序再次执行
int(),又触发一次输入请求,你输入的8被int()转为整数但也不保存 input()把8当作提示文本,你输入的3被赋值为字符串"3"给input_val2- 交换后输出这两个字符串,就出现了
008 3的结果
修正代码
要正确获取数字输入并去掉前导零,应该先获取输入字符串再转为整数,修正后的主函数代码如下:
if __name__ == '__main__': # 正确写法:先获取输入,再转为整数 input_val1 = int(input("输入第一个数字:")) input_val2 = int(input("输入第二个数字:")) print(*swap_values(input_val1, input_val2))
输入3和8后,会输出8 3,符合预期。
如果需求允许保留输入的字符串格式(比如带前导零),只需要去掉int()转换,同时修正输入写法:
if __name__ == '__main__': input_val1 = input("输入第一个值:") input_val2 = input("输入第二个值:") print(*swap_values(input_val1, input_val2))
这种情况下输入3和008,交换后会输出008 3,属于正常的字符串输出。
内容的提问来源于stack exchange,提问作者Ashley Brown
相关产品推荐
相关产品推荐

