鱼C论坛

 找回密码
 立即注册
查看: 2340|回复: 6

[已解决]关于零基础python第15课课后题的疑问

[复制链接]
发表于 2020-2-27 20:33:12 | 显示全部楼层 |阅读模式

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

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

x
1.        q = True
2.        while q:
3.            num = input('请输入一个整数(输入Q结束程序):')
4.            if num != 'Q':
5.                num = int(num)
6.                print('十进制 -> 十六进制 : %d -> 0x%x' % (num, num))
7.                print('十进制 -> 八进制 : %d -> 0o%o' % (num, num))
8.                print('十进制 -> 二进制 : %d -> ' % num, bin(num))
9.            else:
10.                q = False


请问大佬们第八行,为什么bin()这个函数的计算结果可以直接放在最终打印的字符串里?
如果不是把bin(num)的结果放在字符串的最后,而是放在字符串的中间位置可以吗?可以的话应该怎么做呢?
最佳答案
2020-2-27 20:39:36
1.这就好比你同时打印两个变量print(a,b)

2. bin(num)是字符型,可以用%s
print('十进制 -> 二进制 : %d -> %s' % (num, bin(num)))
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-27 20:39:36 | 显示全部楼层    本楼为最佳答案   
1.这就好比你同时打印两个变量print(a,b)

2. bin(num)是字符型,可以用%s
print('十进制 -> 二进制 : %d -> %s' % (num, bin(num)))
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-27 20:41:01 | 显示全部楼层
如果没有格式化操作符的话,默认都是在字符串的最后
你可以把%d去掉看看效果
如果有帮助请设最佳答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-27 20:44:29 | 显示全部楼层
本帖最后由 yexing 于 2020-2-27 20:49 编辑

bin()函数的返回值就是十进制转二进制的结果,当然可以直接格式化进字符串。
可以通过字符串格式化的方法或者字符串拼接的方法把计算的结果打印出来,比如:
  1. #字符串格式化1
  2. print('十进制 -> 二进制 : %d -> %s' % num, bin(num)) #bin()函数返回值是一个字符串

  3. #字符串格式化2
  4. print('十进制 -> 二进制 : {} -> {}'.format(num, bin(num)))

  5. #字符串格式化3
  6. print(f'十进制 -> 二进制 : {num} -> {bin(num)}')

  7. #或者字符串拼接:
  8. print('十进制 -> 二进制 : ' + num + ' -> ' + bin(num))
复制代码


如果按照你的想法把 bin(num) 放在字符串中间,请参考 字符串格式化3 或 字符串拼接 。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-28 16:42:49 | 显示全部楼层
本人也是新手,若有誤解也請各位高手指教
bin()是個方法
例如你bin(2)會直接打印出0b10(2的2進制也就是10)
甚至可以弄個標籤給他,以下附上我的做法,給你參考
  1. while True:
  2.     enter = input('請輸入一整數(輸入Q結束):')
  3.     if enter == 'Q':
  4.         break
  5.     enter = int(enter)
  6.     a = '%#x'% enter #輸出16進制
  7.     b = '%#o'% enter #輸出8進制
  8.     c = bin(enter)   #輸出2進制
  9.     print('十進制 -> 十六進制',enter,'->',a)
  10.     print('十進制 -> 八進制  ',enter,'->',b)
  11.     print('十進制 -> 二進制  ',enter,'->',c)

复制代码


這是看了老師的答案之後重新理解一遍再做的:
  1. while True:
  2.     enter = input('請輸入一整數(輸入Q結束):')
  3.     if enter == 'Q':
  4.         break
  5.     enter = int(enter)
  6.     print('十進制 -> 十六進制 %d -> 0x%x' %(enter,enter))
  7.     print('十進制 -> 八進制   %d -> 0o%o'%(enter,enter))
  8.     print('十進制 -> 二進制   %d ->'%(enter),bin(enter))
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-28 16:54:35 | 显示全部楼层
ouyunfu 发表于 2020-2-27 20:39
1.这就好比你同时打印两个变量print(a,b)

2. bin(num)是字符型,可以用%s

了解,谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-28 16:55:51 | 显示全部楼层
qiuyouzhi 发表于 2020-2-27 20:41
如果没有格式化操作符的话,默认都是在字符串的最后
你可以把%d去掉看看效果
如果有帮助请设最佳答案{:10 ...

明白了,谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-1 22:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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