请问这个代码为啥会报错。。还有就是第三个print,二进制那儿可以啥都不写吗?小于...
q = Truewhile 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:54
请问%s不是格式对象为一个字符串吗。。第二种改法请问这个bin(num)是怎么知道放>旁边的,若是最后一个%后 ...
%后面跟多个参数是依次放的
但是第二种改法实际上没有格式化两个参数,只格式化了num
bin(num)是作为print的第二参数存在的
打印'十进制 -> 二进制 : %d -> ' % (num),
打印 bin(num)
只有'十进制 -> 二进制 : %d -> ' % (num) 用到了格式化,并且参数只有一个 第八行代码那儿,format函数不是有位置参数关键字啥的确定后面的内容往哪儿放嘛,这个 %d -> ' %就直接依次放吗?后面这个bin(num)是怎么确定放>旁边的。。 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
报错的内容 print('十进制 -> 二进制 : %d -> %s ' % (num, bin(num))) 本帖最后由 逃兵 于 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
主要问题还是粗心,没有看清楚括号的位置
逃兵 发表于 2021-5-26 08:45
第八行少个括号)
思路一:
一个%d没法格式化两个字符串
请问%s不是格式对象为一个字符串吗。。第二种改法请问这个bin(num)是怎么知道放>旁边的,若是最后一个%后面跟多个参数,怎么确定他们怎么放置,还是都是依次放。。 逃兵 发表于 2021-5-26 08:45
第八行少个括号)
思路一:
一个%d没法格式化两个字符串
比如第二种改法那个bin(num)怎么不放>前面或者其他位置。。 杨东明 发表于 2021-5-26 08:55
比如第二种改法那个bin(num)怎么不放>前面或者其他位置。。
二进制数字实际上就是字符串
第二个实际上是print(a,b)打印a和b
其中a='十进制 -> 二进制 : %d -> ' % (num)
b= bin(num) 杨东明 发表于 2021-5-26 08:54
请问%s不是格式对象为一个字符串吗。。第二种改法请问这个bin(num)是怎么知道放>旁边的,若是最后一个%后 ...
>>> num = 10
>>> num2 = bin(num)
>>> print(num2)
0b1010
>>> type(num2)
<class 'str'>
数据num2的类型为str 逃兵 发表于 2021-5-26 09:04
%后面跟多个参数是依次放的
但是第二种改法实际上没有格式化两个参数,只格式化了num
懂了!谢谢谢谢大佬{:5_109:} kogawananari 发表于 2021-5-26 08:34
print('十进制 -> 二进制 : %d -> %s ' % (num, bin(num)))
谢谢大佬{:9_226:} 第二种该法加了括号,实际上和最初的一样,仍然是格式化一个字符串,加上括号强调优先级
页:
[1]