鱼C论坛

 找回密码
 立即注册
查看: 1613|回复: 29

[已解决]第15讲的动动手的一个小问题

[复制链接]
发表于 2020-4-18 10:06:09 | 显示全部楼层 |阅读模式

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

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

x
print('十进制 -> 十六进制 : %d -> 0x%x' % (num, num))

print('十进制 -> 八进制 : %d -> 0o%o' % (num, num))

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


有人给我解释一下这个代码吗???


大致懂,但是还有很多小问题不懂
最佳答案
2020-4-18 13:43:25
牛逼牛逼 发表于 2020-4-18 13:39
对的上啊(temp,bin(temp))


…… str.__mod__ 在传入元组的时候会对元组里的元素分别格式化。
字符串里面只有一个占位符,你传了两个元素,自然炸了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-18 10:09:11 | 显示全部楼层
格式化字符串这节课确实比较难……那个列表不用背下来,用的时候拿出来看就行,视频有不理解的地方可以多看几次
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-18 10:13:04 | 显示全部楼层
老八秘制 发表于 2020-4-18 10:09
格式化字符串这节课确实比较难……那个列表不用背下来,用的时候拿出来看就行,视频有不理解的地方可以多看 ...

大佬又是你,我想问一下为什么十进制转十六进制后面为什么是(num,num),八进制也是
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 10:19:37 | 显示全部楼层
牛逼牛逼 发表于 2020-4-18 10:13
大佬又是你,我想问一下为什么十进制转十六进制后面为什么是(num,num),八进制也是

https://blog.csdn.net/qq_41556318/article/details/84072944
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 10:19:40 | 显示全部楼层
牛逼牛逼 发表于 2020-4-18 10:13
大佬又是你,我想问一下为什么十进制转十六进制后面为什么是(num,num),八进制也是

因为第一个num 是十进制啊,第二num代表十六进制,,肯定要两个参数来表示啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-18 10:22:08 | 显示全部楼层
老八秘制 发表于 2020-4-18 10:19
https://blog.csdn.net/qq_41556318/article/details/84072944

这个网站有点看不懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-18 10:23:04 | 显示全部楼层
jkluoling1992 发表于 2020-4-18 10:19
因为第一个num 是十进制啊,第二num代表十六进制,,肯定要两个参数来表示啊

不太懂啊大佬
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 10:24:32 | 显示全部楼层
牛逼牛逼 发表于 2020-4-18 10:22
这个网站有点看不懂

最底下有个知识总结,多敲代码自然就会了,看一遍不懂是很正常的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 10:31:12 | 显示全部楼层

你把十进制转成十六进制,你要输入一个数字,然后再输出一个数字,,你用一个num怎么表示前后变化呢,所以用两个num 来显示
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-18 10:36:58 | 显示全部楼层
jkluoling1992 发表于 2020-4-18 10:31
你把十进制转成十六进制,你要输入一个数字,然后再输出一个数字,,你用一个num怎么表示前后变化呢,所 ...

我输入一个num,它为什么会报错
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-18 10:38:14 | 显示全部楼层
jkluoling1992 发表于 2020-4-18 10:31
你把十进制转成十六进制,你要输入一个数字,然后再输出一个数字,,你用一个num怎么表示前后变化呢,所 ...

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

使用道具 举报

 楼主| 发表于 2020-4-18 10:38:46 | 显示全部楼层
老八秘制 发表于 2020-4-18 10:24
最底下有个知识总结,多敲代码自然就会了,看一遍不懂是很正常的

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

使用道具 举报

发表于 2020-4-18 12:07:44 | 显示全部楼层
本帖最后由 Hoiste 于 2020-4-18 12:10 编辑
牛逼牛逼 发表于 2020-4-18 10:36
我输入一个num,它为什么会报错


这两个num是括在一起的%(num, num),与前面%d,%o对应位置配对,第一个%d代表后面第一个%num为十进制数,所以会把第一个num的数字转化为十进制数替换到%d的位置,第二个%o表示把%后第二个num转化为八进制替换到%o的位置。正因为前面字符串中有两个%号,所以在字符串后面也要跟上两个%num代表前面%d和%o的对象。

格式化字符串只是看起来难而已,只要知道%后面跟的字符代表什么含义并与字符串之后的%一一对应就可以完成写入不同类型数据到字符串里的功能了,基本上只要熟练了就自然能够应用自如的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 12:18:54 | 显示全部楼层

你看前面的格式化操作符,有两个
所以后面也要对应两个
但由于Python语法,要用括号打包起来。
这个东西你自己多练就好了,实在掌握不好就
用f-string。
语法:
  1. >>> a = 5
  2. >>> print(f"a = {a}")
  3. a = 5
复制代码

在字符串前面加上f,然后把要打印的变量放进大括号里就好
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 12:29:34 | 显示全部楼层
没啥用,不用记。

写程序一辈子你能转换几次八进制和十六进制?

真有这需求了,再回来现查都赶趟。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 12:34:57 | 显示全部楼层
这个不会就不会了,写一辈子程序都不见得用上。
现在谁还用 str.__mod__?都用 f-string 和 str.format 去了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 13:02:06 | 显示全部楼层
  1. q = True    # 定义一个变量 q 标志着是否继续循环,True 表示继续循环,否则退出循环
  2. while q:    # 当 q 为真时循环
  3.     # 询问用户输入
  4.     num = input('请输入一个整数(输入Q结束程序):')
  5.     # 如果用户输入的不是 Q
  6.     if num != 'Q':
  7.         # 将用户输入的数字转化为整数
  8.         num = int(num)
  9.         # 字符串格式化输出 num 以及 num 转化为十六进制的结果
  10.         # 这里第一个 num 填充字符串的 %d,第二个 num 填充字符串的 %x
  11.         print('十进制 -> 十六进制 : %d -> 0x%x' % (num, num))
  12.         # 字符串格式化输出 num 以及 num 转化为八进制的结果
  13.         # 这里第一个 num 填充字符串的 %d,第二个 num 填充字符串的 %o
  14.         print('十进制 -> 八进制 : %d -> 0o%o' % (num, num))
  15.         # 注意,下面一句代码是打印两个字符串,即 '十进制 -> 二进制 : %d -> ' % num 和 bin(num)
  16.         # 第一个打印的字符串中 num 填充原字符串中的 %d
  17.         print('十进制 -> 二进制 : %d -> ' % num, bin(num))
  18.     else:
  19.         # 如果用户输入的是 'Q' 则将 q 设置为 False,表示需要退出循环
  20.         q = False
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-18 13:32:04 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-18 12:34
这个不会就不会了,写一辈子程序都不见得用上。
现在谁还用 str.__mod__?都用 f-string 和 str.format 去 ...

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

使用道具 举报

 楼主| 发表于 2020-4-18 13:32:40 | 显示全部楼层
heidern0612 发表于 2020-4-18 12:29
没啥用,不用记。

写程序一辈子你能转换几次八进制和十六进制?

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

使用道具 举报

 楼主| 发表于 2020-4-18 13:34:53 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-18 12:34
这个不会就不会了,写一辈子程序都不见得用上。
现在谁还用 str.__mod__?都用 f-string 和 str.format 去 ...

大佬你好,问你一个问题print('十进制 -> 二进制 : %d -> '% (temp , bin(temp))),为什么我temp前面加个括号就报错
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-16 23:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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