huyanmin 发表于 2020-12-8 14:53:34

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

#我略微改动
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: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’是字符串不是整数所以会报错

逃兵 发表于 2020-12-8 15:23:38

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


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

按照修改后的代码
我们传入字符串'Q'
num=int('Q')
显然字符串'Q'无法转化为整型
代码报错

huyanmin 发表于 2020-12-8 15:47:55

小伤口 发表于 2020-12-8 15:22
因为‘Q’是字符串不是整数所以会报错

按照你改后,仍然报错

小伤口 发表于 2020-12-8 15:50:51

huyanmin 发表于 2020-12-8 15:47
按照你改后,仍然报错

我知道{:10_250:}没办法你想要num=int(number)
我也不知道该怎么改
我改的只是另一个小错误

huyanmin 发表于 2020-12-8 15:51:47

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


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

我用了两个变量,一个是字符串一个是整数啊

逃兵 发表于 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'
把字符串转化成整型报的错

小伤口 发表于 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))


你真想要你改的
就这样吧你不嫌麻烦的话{:10_250:}

huyanmin 发表于 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

换个位置即可

小伤口 发表于 2020-12-8 16:27:35

huyanmin 发表于 2020-12-8 16:23
q = True
while q:
    number=input('请输入一个整数(输入Q结束程序):')


这样不就跟甲鱼老师一样了吗{:10_256:}

huyanmin 发表于 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))

小伤口 发表于 2020-12-8 16:50:32

huyanmin 发表于 2020-12-8 16:33
q = True
while q:
    number=input('请输入一个整数(输入Q结束程序):')


虽然你这样也没有问题
但是开头还是不用number!='Q'为好,因为你后面是用num来判定
从代码运行角度讲应该是num!=‘Q’{:10_256:}

huyanmin 发表于 2020-12-8 16:57:43

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

num!=‘Q’他两个类型不同,num是整形,‘Q’是字符型

小伤口 发表于 2020-12-8 17:07:12

huyanmin 发表于 2020-12-8 16:57
num!=‘Q’他两个类型不同,num是整形,‘Q’是字符型

if number=='Q':
      break
所以我用了这个呀
嗯,,,,你我的理解都可以
的确不用改也可以{:10_256:}

huyanmin 发表于 2020-12-8 17:16:06

小伤口 发表于 2020-12-8 17:07
if number=='Q':
      break
所以我用了这个呀


num!=‘Q’他两个类型不同,num是整形,‘Q’是字符型
类型不同居然也可以比较,跟君一席谈,收获颇丰

小伤口 发表于 2020-12-8 17:18:20

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

好吧,我错了{:10_243:}

huyanmin 发表于 2020-12-8 17:21:28

小伤口 发表于 2020-12-8 17:18
好吧,我错了

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

小伤口 发表于 2020-12-8 17:35:54

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

{:10_256:}

小伤口 发表于 2020-12-8 17:41:37

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

你看到第几讲了呀{:10_297:}
课后作业做不来我{:10_266:}

huyanmin 发表于 2020-12-8 19:24:25

小伤口 发表于 2020-12-8 17:41
你看到第几讲了呀
课后作业做不来我

16讲,你呢
页: [1] 2
查看完整版本: python 课,习题进制转换,我略一改动,输入Q提示出错