lzymm1 发表于 2021-1-6 22:07:54

第十五讲课后作业

第十五讲课后作业
要求写一个进制转换程序,这是我的代码,对比了一下参考答案,对于print('十进制 -> 十六进制 : %d -> 0x%x' % (num, num))这个地方有点疑惑,不明白自己错在哪里。
while 1:
    int1 = input("请输入一个整数(输入Q结束程序):")
    if int1 != 'Q':
      print('十进制 -> 十六进制:' + int1 + "%x" % int1)
      print('十进制 -> 八进制:' + int1 + "%o" % int1)
      print('十进制 -> 二进制:' + int1 + "%b" % int1)
    else:
      break

这是参考答案
q = True
while q:
    num = input('请输入一个整数(输入Q结束程序):')
    if num != 'Q':
      num = int(num)
      print('十进制 -> 十六进制 : %d -> 0x%x' % (num, num))
      print('十进制 -> 八进制 : %d -> 0o%o' % (num, num))
      print('十进制 -> 二进制 : %d -> ' % num, bin(num))
    else:
      q = False

我的代码为什么会报错?需要怎么修改?求大佬解答。

昨非 发表于 2021-1-6 22:07:55

本帖最后由 昨非 于 2021-1-6 22:57 编辑

进制转换操作数的int类型,字符串是不行的
while 1:
    int1 = input("请输入一个整数(输入Q结束程序):")
    if int1 != 'Q':
      int2=int(int1)   #int2为整型,int1为字符串型用于拼接(+)
      print('十进制 -> 十六进制:' + int1 + "--->0x%x" % int2)
      print('十进制 -> 八进制:' + int1 + "--->0o%o" % int2)
      print('十进制 -> 二进制:' + int1 +"--->" ,bin(int2))
    else:
      break

至于答案的理解,建议参考下面这个帖子的二楼答案
<font color="red">[已解决]</font>进制转换代码
https://fishc.com.cn/thread-172101-1-1.html
(出处: 鱼C论坛)

JPhoenix 发表于 2021-1-8 10:15:09

字符串不能和INT拼接,你可以强制转换类型拼接或者像参考答案那种格式化进去
按你的思路提供写法
print('十进制 -> 十六进制:' + str(int1) + "%x" % int1)
页: [1]
查看完整版本: 第十五讲课后作业