鱼C论坛

 找回密码
 立即注册
查看: 1277|回复: 9

[已解决]第十五课最后一题

[复制链接]
发表于 2018-1-22 23:52:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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


这里的print('十进制 -> 二进制 : %d -> ' % num, bin(num))
为什么不是print('十进制 -> 二进制 : %d -> ' % (num, bin(num))),%后面不是要用()括起来吗?
最佳答案
2018-1-23 00:14:17
本帖最后由 王子淼 于 2018-1-23 00:26 编辑

temp=0
while 1:
    temp=input('请输入一个整数(输入Q结束程序):')
    if temp=='Q':
        break
    else:
        num = int(temp)
        print('十进制 -> 十六进制:%d -> %#x' % num)
        print('十进制 -> 八进制:%d  -> %#o' % num)
        print('十进制 -> 二进制:%d -> ',bin(num))



我觉得我这个写法你可能更好理解一点 , %是格式化输出,而bin是Python的一个BIF(内置函数),内置函数是有自己规则的,不需要%来指手画脚~~个人理解~~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-1-23 00:14:17 | 显示全部楼层    本楼为最佳答案   
本帖最后由 王子淼 于 2018-1-23 00:26 编辑

temp=0
while 1:
    temp=input('请输入一个整数(输入Q结束程序):')
    if temp=='Q':
        break
    else:
        num = int(temp)
        print('十进制 -> 十六进制:%d -> %#x' % num)
        print('十进制 -> 八进制:%d  -> %#o' % num)
        print('十进制 -> 二进制:%d -> ',bin(num))



我觉得我这个写法你可能更好理解一点 , %是格式化输出,而bin是Python的一个BIF(内置函数),内置函数是有自己规则的,不需要%来指手画脚~~个人理解~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-23 00:38:42 | 显示全部楼层
print('十进制 -> 十六进制 : %d -> 0x%x' % (num, num))

我突然也有点蒙了,0x%x 是什么意思,,转换十六进制不是%#x吗?还有后面为什么是(num,num), 不是% num 就行了吗
求解答!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-23 08:31:22 | 显示全部楼层
前面没运算应该就不用扩,就像1×(1+1)要扩,1+1就不用
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-23 08:32:17 | 显示全部楼层
只是个人理解。。。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-23 09:14:34 | 显示全部楼层
首先,是因为print支持这样的输出形式:
print(a,b)
上面print('十进制 -> 二进制 : %d -> ' % num, bin(num))就是这种形式

你说的%后面不是要用()括起来,那是当字符串中有多个%的时候,比如前面的
print('十进制 -> 十六进制 : %d -> 0x%x' % (num, num))
print('十进制 -> 八进制 : %d -> 0o%o' % (num, num))
都是这种形式
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-25 23:11:34 | 显示全部楼层
谢谢各位的热心解答
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-22 19:11:12 | 显示全部楼层
王子淼 发表于 2018-1-23 00:14
temp=0
while 1:
    temp=input('请输入一个整数(输入Q结束程序):')

Traceback (most recent call last):
  File "C:\Users\leoliu\AppData\Local\Programs\Python\Python36\test.py", line 8, in <module>
    print('十进制 -> 十六进制:%d -> %#x' % num)
TypeError: not enough arguments for format string

运行会报错呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-22 19:12:13 | 显示全部楼层
王子淼 发表于 2018-1-23 00:14
temp=0
while 1:
    temp=input('请输入一个整数(输入Q结束程序):')

Traceback (most recent call last):
  File "C:\Users\leoliu\AppData\Local\Programs\Python\Python36\test.py", line 8, in <module>
    print('十进制 -> 十六进制:%d -> %#x' % num)
TypeError: not enough arguments for format string

运行会报错呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-23 18:49:51 | 显示全部楼层
zhiyuzhishan 发表于 2018-3-22 19:12
Traceback (most recent call last):
  File "C:%users\leoliu\AppData\Local\Programs\Python\Python36 ...

报错说你没有足够的参数去格式化 输出,你贴下你的代码吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-6 04:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表