Python如何实现接收用户输入的二进制数并转换为十进制数
错误原因
你的代码逻辑顺序完全颠倒了:
- 你首先将用户输入的二进制字符串用
int(input())直接按十进制规则转成了整数,比如用户输入二进制的101(对应十进制5),这一步会得到十进制整数101,而不是你以为的二进制对应值。 - 后续
bin(n)是把这个十进制整数再转成二进制格式的字符串,再调用int(bin_n, 2)只是把这个字符串又转回了最开始得到的十进制整数,自然输出和输入的数字一模一样。
正确实现
你不需要做多余的格式转换,用户输入的本身就是二进制格式的字符串,直接调用int()时指定第二参数为2即可完成转换:
print("Please input your number") bin_input = input().strip() # 直接将二进制字符串按base=2规则转成十进制整数 dec_num = int(bin_input, 2) print(dec_num)
可选校验逻辑
如果要避免用户输入非二进制字符触发报错,可以加一层输入合法性校验:
print("Please input your number") bin_input = input().strip() # 校验输入是否仅包含0和1 if all(c in '01' for c in bin_input): dec_num = int(bin_input, 2) print(f"对应的十进制数为: {dec_num}") else: print("输入无效,请输入仅包含0和1的二进制数")
内容的提问来源于stack exchange,提问作者Maksim Muzychenko
相关产品推荐
相关产品推荐

