鱼C论坛

 找回密码
 立即注册
查看: 2976|回复: 12

[已解决]请问这个代码为啥会报错。。还有就是第三个print,二进制那儿可以啥都不写吗?小于...

[复制链接]
发表于 2021-5-26 08:16:49 | 显示全部楼层 |阅读模式
5鱼币
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-5-26 08:16:50
杨东明 发表于 2021-5-26 08:54
请问%s不是格式对象为一个字符串吗。。第二种改法请问这个bin(num)是怎么知道放>旁边的,若是最后一个%后 ...

%后面跟多个参数是依次放的

但是第二种改法实际上没有格式化两个参数,只格式化了num

bin(num)是作为print的第二参数存在的

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

只有'十进制 -> 二进制 : %d -> ' % (num) 用到了格式化,并且参数只有一个

最佳答案

查看完整内容

%后面跟多个参数是依次放的 但是第二种改法实际上没有格式化两个参数,只格式化了num bin(num)是作为print的第二参数存在的 打印'十进制 -> 二进制 : %d -> ' % (num), 打印 bin(num) 只有'十进制 -> 二进制 : %d -> ' % (num) 用到了格式化,并且参数只有一个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-26 08:16:50 | 显示全部楼层    本楼为最佳答案   
杨东明 发表于 2021-5-26 08:54
请问%s不是格式对象为一个字符串吗。。第二种改法请问这个bin(num)是怎么知道放>旁边的,若是最后一个%后 ...

%后面跟多个参数是依次放的

但是第二种改法实际上没有格式化两个参数,只格式化了num

bin(num)是作为print的第二参数存在的

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

只有'十进制 -> 二进制 : %d -> ' % (num) 用到了格式化,并且参数只有一个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-5-26 08:19:19 | 显示全部楼层
第八行代码那儿,format函数不是有位置参数关键字啥的确定后面的内容往哪儿放嘛,这个 %d -> ' %就直接依次放吗?后面这个bin(num)是怎么确定放>旁边的。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-5-26 08:22:06 | 显示全部楼层
Traceback (most recent call last):
  File "D:/python project/第十六节课/示例进制转换.py", line 13, in <module>
    print('十进制 -> 二进制 : %d -> ' % (num, bin(num)))
TypeError: not all arguments converted during string formatting
报错的内容
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-26 08:34:19 | 显示全部楼层
print('十进制 -> 二进制 : %d -> %s ' % (num, bin(num)))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-26 08:45:45 | 显示全部楼层
本帖最后由 逃兵 于 2021-5-26 08:47 编辑

第八行少个括号)
思路一:
一个%d没法格式化两个字符串
字符串需要补充一个%s
print('十进制 -> 二进制 : %d -> %s ' % (num, bin(num)))
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

思路二:
在第一个num后面加个括号)
不需要%s格式化
print('十进制 -> 二进制 : %d ->  ' % (num), bin(num))
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



主要问题还是粗心,没有看清楚括号的位置
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-5-26 08:54:35 | 显示全部楼层
逃兵 发表于 2021-5-26 08:45
第八行少个括号)
思路一:
一个%d没法格式化两个字符串

请问%s不是格式对象为一个字符串吗。。第二种改法请问这个bin(num)是怎么知道放>旁边的,若是最后一个%后面跟多个参数,怎么确定他们怎么放置,还是都是依次放。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-5-26 08:55:40 | 显示全部楼层
逃兵 发表于 2021-5-26 08:45
第八行少个括号)
思路一:
一个%d没法格式化两个字符串

比如第二种改法那个bin(num)怎么不放>前面或者其他位置。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-26 08:57:53 | 显示全部楼层
杨东明 发表于 2021-5-26 08:55
比如第二种改法那个bin(num)怎么不放>前面或者其他位置。。

二进制数字实际上就是字符串

第二个实际上是print(a,b)打印a和b
其中a='十进制 -> 二进制 : %d -> ' % (num)
b= bin(num)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-26 09:02:33 | 显示全部楼层
杨东明 发表于 2021-5-26 08:54
请问%s不是格式对象为一个字符串吗。。第二种改法请问这个bin(num)是怎么知道放>旁边的,若是最后一个%后 ...
>>> num = 10
>>> num2 = bin(num)
>>> print(num2)
0b1010
>>> type(num2)
<class 'str'>

数据num2的类型为str
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-5-26 09:10:44 | 显示全部楼层
逃兵 发表于 2021-5-26 09:04
%后面跟多个参数是依次放的

但是第二种改法实际上没有格式化两个参数,只格式化了num

懂了!谢谢谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-5-26 09:11:43 | 显示全部楼层
kogawananari 发表于 2021-5-26 08:34
print('十进制 -> 二进制 : %d -> %s ' % (num, bin(num)))

谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-9 21:09:54 | 显示全部楼层
第二种该法加了括号,实际上和最初的一样,仍然是格式化一个字符串,加上括号强调优先级
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 15:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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