鱼C论坛

 找回密码
 立即注册
查看: 3609|回复: 23

[已解决]python 课,习题进制转换,我略一改动,输入Q提示出错

[复制链接]
发表于 2020-12-8 14:53:34 | 显示全部楼层 |阅读模式

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

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

x
#我略微改动
q = True
while q:
    number=input('请输入一个整数(输入Q结束程序):')
    num=int(number)  #此处改动
    if number!='Q':
        
        print('十进制→十六进制: %d→%#x'%(num,num))
        print('十进制→八进制:   %d→0o%o'%(num,num))
        print('十进制→二进制: %d→'%num,bin(num))
    else:
        q=False



#原代码
q = True
while q:
    num= input('请输入一个整数(输入Q结束程序):')
    if num != 'Q':
        num = int(num)
        print('十进制 -> 十六进制 : %d -> %#x' % (num, num))
        print('十进制 -> 八进制 : %d ->   0o%o' % (num, num))
        print('十进制 -> 二进制 : %d ->  '  % num, bin(num))
    else:
        q = False
最佳答案
2020-12-8 15:23:38
源代码逻辑:
先判断输入的内容num是否为'Q'
不是'Q'的话再将字符串num转化为整型


修改后代码逻辑:
先将输入的内容num转化为整型
再判断变为整型的num是否为字符串'Q'

按照修改后的代码
我们传入字符串'Q'
num  =  int('Q')
显然字符串'Q'无法转化为整型
代码报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-8 15:22:34 | 显示全部楼层
本帖最后由 小伤口 于 2020-12-8 15:24 编辑
q = True
while q:
    number=input('请输入一个整数(输入Q结束程序):')
    num=int(number)#此处改动
    if num!='Q':#这应该是num不是number
        
        print('十进制→十六进制: %d→%#x'%(num,num))
        print('十进制→八进制:   %d→0o%o'%(num,num))
        print('十进制→二进制: %d→'%num,bin(num))
    else:
        q=False
因为‘Q’是字符串不是整数所以会报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-8 15:23:38 | 显示全部楼层    本楼为最佳答案   
源代码逻辑:
先判断输入的内容num是否为'Q'
不是'Q'的话再将字符串num转化为整型


修改后代码逻辑:
先将输入的内容num转化为整型
再判断变为整型的num是否为字符串'Q'

按照修改后的代码
我们传入字符串'Q'
num  =  int('Q')
显然字符串'Q'无法转化为整型
代码报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-8 15:47:55 | 显示全部楼层
小伤口 发表于 2020-12-8 15:22
因为‘Q’是字符串不是整数所以会报错

按照你改后,仍然报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-8 15:50:51 | 显示全部楼层
huyanmin 发表于 2020-12-8 15:47
按照你改后,仍然报错

我知道没办法你想要num=int(number)
我也不知道该怎么改
我改的只是另一个小错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-8 15:51:47 | 显示全部楼层
逃兵 发表于 2020-12-8 15:23
源代码逻辑:
先判断输入的内容num是否为'Q'
不是'Q'的话再将字符串num转化为整型

number=input('请输入一个整数(输入Q结束程序):')
    num=int(number)  #此处改动

我用了两个变量,一个是字符串一个是整数啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-8 15:55:15 | 显示全部楼层
huyanmin 发表于 2020-12-8 15:51
number=input('请输入一个整数(输入Q结束程序):')
    num=int(number)  #此处改动

错就错在这里num=int(number)
>>> number = 'Q'
>>> num = int(number)
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    num = int(number)
ValueError: invalid literal for int() with base 10: 'Q'
把字符串转化成整型报的错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-12-8 15:58:49 | 显示全部楼层
huyanmin 发表于 2020-12-8 15:51
number=input('请输入一个整数(输入Q结束程序):')
    num=int(number)  #此处改动
q = True
while q:
    number=input('请输入一个整数(输入Q结束程序):')
    if number=='Q':
        break
    num=int(number)#此处改动
    if num!='Q':
        print('十进制→十六进制: %d→%#x'%(num,num))
        print('十进制→八进制:   %d→0o%o'%(num,num))
        print('十进制→二进制: %d→'%num,bin(num))
你真想要你改的
就这样吧你不嫌麻烦的话
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-8 16:23:40 | 显示全部楼层
小伤口 发表于 2020-12-8 15:58
你真想要你改的
就这样吧你不嫌麻烦的话

q = True
while q:
    number=input('请输入一个整数(输入Q结束程序):')
   
    if number!='Q':
        num=int(number)#换个位置即可
        print('十进制→十六进制: %d→%#x'%(num,num))
        print('十进制→八进制:   %d→0o%o'%(num,num))
        print('十进制→二进制: %d→'%num,bin(num))
    else:
        q=False

换个位置即可
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-8 16:27:35 | 显示全部楼层
huyanmin 发表于 2020-12-8 16:23
q = True
while q:
    number=input('请输入一个整数(输入Q结束程序):')

这样不就跟甲鱼老师一样了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-8 16:33:38 | 显示全部楼层
小伤口 发表于 2020-12-8 15:58
你真想要你改的
就这样吧你不嫌麻烦的话

q = True
while q:
    number=input('请输入一个整数(输入Q结束程序):')
    if number=='Q':
        break
    num=int(number)#此处改动
    if number!='Q':#此处不用改动即可
        print('十进制→十六进制: %d→%#x'%(num,num))
        print('十进制→八进制:   %d→0o%o'%(num,num))
        print('十进制→二进制: %d→'%num,bin(num))

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

使用道具 举报

发表于 2020-12-8 16:50:32 | 显示全部楼层
huyanmin 发表于 2020-12-8 16:33
q = True
while q:
    number=input('请输入一个整数(输入Q结束程序):')

虽然你这样也没有问题
但是开头还是不用number!='Q'为好,因为你后面是用num来判定
从代码运行角度讲应该是num!=‘Q’
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-8 16:57:43 | 显示全部楼层
小伤口 发表于 2020-12-8 16:50
虽然你这样也没有问题
但是开头还是不用number!='Q'为好,因为你后面是用num来判定
从代码运行角度讲应 ...

num!=‘Q’他两个类型不同,num是整形,‘Q’是字符型
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-8 17:07:12 | 显示全部楼层
huyanmin 发表于 2020-12-8 16:57
num!=‘Q’他两个类型不同,num是整形,‘Q’是字符型

if number=='Q':
        break
所以我用了这个呀
嗯,,,,你我的理解都可以
的确不用改也可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-8 17:16:06 | 显示全部楼层
小伤口 发表于 2020-12-8 17:07
if number=='Q':
        break
所以我用了这个呀

num!=‘Q’他两个类型不同,num是整形,‘Q’是字符型
类型不同居然也可以比较,跟君一席谈,收获颇丰
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-8 17:18:20 | 显示全部楼层
huyanmin 发表于 2020-12-8 17:16
num!=‘Q’他两个类型不同,num是整形,‘Q’是字符型
类型不同居然也可以比较,跟君一席谈,收获颇丰

好吧,我错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-8 17:21:28 | 显示全部楼层

num!=‘Q’他两个类型不同,num是整形,‘Q’是字符型
类型不同,真的可以比较,我试了能运行,没有错啊你

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
小伤口 + 1 + 1 鱼C有你更精彩^_^

查看全部评分

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

使用道具 举报

发表于 2020-12-8 17:35:54 | 显示全部楼层
huyanmin 发表于 2020-12-8 17:21
num!=‘Q’他两个类型不同,num是整形,‘Q’是字符型
类型不同,真的可以比较,我试了能运行,没有错 ...

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

使用道具 举报

发表于 2020-12-8 17:41:37 | 显示全部楼层
huyanmin 发表于 2020-12-8 17:21
num!=‘Q’他两个类型不同,num是整形,‘Q’是字符型
类型不同,真的可以比较,我试了能运行,没有错 ...

你看到第几讲了呀
课后作业做不来我
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-8 19:24:25 | 显示全部楼层
小伤口 发表于 2020-12-8 17:41
你看到第几讲了呀
课后作业做不来我

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-10 21:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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