月半三木 发表于 2021-6-7 14:20:51

字符串格式化

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
上面那个十进制转换的代码里,为什么是%d -> 0x%x' % (num, num)啊,我看视频里,把一个数字转换只需要'%x' % 160,就可以把他转换成十六进制了啊,为什么代码里的%后面需要两个num

逃兵 发表于 2021-6-7 14:30:21

'%x' % 160 没有错
%d用来放十进制的,也就是原数160

Twilight6 发表于 2021-6-7 14:31:46


'十进制 -> 十六进制 : %d -> 0x%x' % (num, num)

'十进制 -> 八进制 : %d -> 0o%o' % (num, num)

'十进制 -> 二进制 : %d -> ' % num, bin(num)

%d 格式化整型,%x 格式化为十六进制数,和后面两个 num 一一对应

这里 %x 前面的 0x 是为了表示是十六进制数,后面 print的 0o 表示八进制数

而最后一个的字符串中只有一个 %d 格式化,即只将 num 格式化入,而 bin(num) 是直接打印该函数运行结果

而 bin 函数返回的二级制值自带 0b 所以不需要在字符串前面添加 0b 进行格式化打印
页: [1]
查看完整版本: 字符串格式化