鱼C论坛

 找回密码
 立即注册
查看: 1249|回复: 10

[已解决]求教:0基础入门python 第015讲 动动手

[复制链接]
发表于 2018-1-11 14:11:33 | 显示全部楼层 |阅读模式

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

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

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

请教几个问题:1.%d -> 0x%x为什么包含在引号里面,这样不会当成字符串打印出来么
                        2.为什么放到引号外面就打印运算不了
                        3.%是相当于 format 将 num塞给 %d吗


之前真没想过代码还能这样写 ,在引号里进行运算再打印出来
最佳答案
2018-1-11 14:32:02
1.%d -> 0x%x为什么包含在引号里面,这样不会当成字符串打印出来么
这是特殊的字符串%部分将被后面的值代替。
2.为什么放到引号外面就打印运算不了
如果%d放在字符串外就会发生语法错误,因为它既不是字符串也不是变量名
3.%是相当于 format 将 num塞给 %d吗
这种用法与format类似,都称为字符串格式化,不过现在一般推荐使用format
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-11 14:32:02 | 显示全部楼层    本楼为最佳答案   

回帖奖励 +1 鱼币

1.%d -> 0x%x为什么包含在引号里面,这样不会当成字符串打印出来么
这是特殊的字符串%部分将被后面的值代替。
2.为什么放到引号外面就打印运算不了
如果%d放在字符串外就会发生语法错误,因为它既不是字符串也不是变量名
3.%是相当于 format 将 num塞给 %d吗
这种用法与format类似,都称为字符串格式化,不过现在一般推荐使用format
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-11 14:37:27 | 显示全部楼层
%字符串格式化是来自c语言的 不推荐在python中用 体现不出高级语言的有点
推荐str.format()方法
%相当于占位符 有%的字符串会自动先把值填充后返回字符串 会比直接拼接字符串方便些
类似功能还有template语言中的{{}} 3.6中的fstring 都是字符串拼接的方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-11 15:36:13 | 显示全部楼层
冬雪雪冬 发表于 2018-1-11 14:32
1.%d -> 0x%x为什么包含在引号里面,这样不会当成字符串打印出来么
这是特殊的字符串%部分将被后面的值代 ...

谢谢你
那如果换成format要怎么写
print('十进制 -> 十六进制 :',"{%d} -> {0x%x}" .format(num, num))  这么写程序报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-11 15:39:22 | 显示全部楼层
lolykong 发表于 2018-1-11 15:36
谢谢你
那如果换成format要怎么写
print('十进制 -> 十六进制 :',"{%d} -> {0x%x}" .format(num, num)) ...
  1. >>> num = 1515
  2. >>> print('十进制 -> 十六进制 :',"{:d} -> 0x{:x}" .format(num, num))
  3. 十进制 -> 十六进制 : 1515 -> 0x5eb
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-11 15:43:09 | 显示全部楼层

{:d} -> 0x{:x}
请问冒号是代表什么意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-11 15:48:05 | 显示全部楼层
lolykong 发表于 2018-1-11 15:43
{:d} -> 0x{:x}
请问冒号是代表什么意思

{}是占位符,正常写应该是从{0}开始,后面一一对应format中的值,我的写法不够规范,标准的写法是:
  1. >>> print('十进制 -> 十六进制 :',"{0:d} -> 0x{0:x}" .format(num, num))
  2. 十进制 -> 十六进制 : 1515 -> 0x5eb
复制代码

后面加上冒号和字母等同于%后面的字母,如{0:d}等同于%d
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-11 21:12:56 | 显示全部楼层
冬雪雪冬 发表于 2018-1-11 15:48
{}是占位符,正常写应该是从{0}开始,后面一一对应format中的值,我的写法不够规范,标准的写法是:

...

OK 谢谢你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-11 21:21:54 | 显示全部楼层
sky 发表于 2018-1-11 14:37
%字符串格式化是来自c语言的 不推荐在python中用 体现不出高级语言的有点
推荐str.format()方法
%相当于 ...

OK 谢谢你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-28 16:50:03 | 显示全部楼层

输出会报错啊,提示d不是str
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-31 10:07:33 | 显示全部楼层
一秋秋s 发表于 2019-1-28 16:50
输出会报错啊,提示d不是str

把你的全部代码发上来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 15:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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