鱼C论坛

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

[已解决]关于零基础15课后练习题

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

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

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

x
我把015的课后练习的改了一下,在输入字符的时候总是报错,不知道问题出在哪了?
麻烦大家给看看


  1. q = 'True'

  2. while q:
  3.     num = input('请输入一个整数:')
  4.     if num != 'q' or num != 'Q':
  5.         num = int(num)
  6.         print('十进制 %d 转换为二进制是:' % num,bin(num))
  7.         print('十进制 %d 转换为八进制是:' % num,oct(num))
  8.         print('十进制 %d 转换为十六进制是:' % num,hex(num))
  9.     elif num == 'q' or num == 'Q':
  10.         print('再见!')
  11.         q = 'False'
  12.     else:
  13.         print('输入错误,请重新输入!')
复制代码
最佳答案
2018-1-6 14:44:43
#这里不能加“”,会将关键字变成字符串
q = True   

while q:
    num = input('请输入一个整数:')

    #这里是and!非q或非Q永远为真了,我上次回答有问题
    if num != 'q' and num != 'Q':      
        num = int(num)
        print('十进制 %d 转换为二进制是:' % num,bin(num))
        print('十进制 %d 转换为八进制是:' % num,oct(num))
        print('十进制 %d 转换为十六进制是:' % num,hex(num))
    elif num == 'q' or num == 'Q':
        print('再见!')
        q = 'False'
   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-6 11:42:03 | 显示全部楼层
逻辑上就是错误的,第一个if内是将所有非q和Q的所有字符串转换为整型,当你输入一个非q的字符串例如“fasldfhl”,python无法转换成整型就会报错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-6 12:03:55 | 显示全部楼层
不管输入什么
  1. if num != 'q' or num != 'Q'
复制代码

这句都是为真的
可以改成
  1. if num.isdigit()
复制代码

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

使用道具 举报

 楼主| 发表于 2018-1-6 12:25:09 | 显示全部楼层
ych 发表于 2018-1-6 11:42
逻辑上就是错误的,第一个if内是将所有非q和Q的所有字符串转换为整型,当你输入一个非q的字符串例如“fasld ...

感谢,我明白了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-6 12:28:04 | 显示全部楼层
影-死神 发表于 2018-1-6 12:03
不管输入什么

这句都是为真的

感谢,我把代码改了一下,但是为什么我第二个elif 在我输入一个非q的字符时系统能打印,但是不退出呢?
我不是定义了q = 'False'吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-6 14:44:43 | 显示全部楼层    本楼为最佳答案   
#这里不能加“”,会将关键字变成字符串
q = True   

while q:
    num = input('请输入一个整数:')

    #这里是and!非q或非Q永远为真了,我上次回答有问题
    if num != 'q' and num != 'Q':      
        num = int(num)
        print('十进制 %d 转换为二进制是:' % num,bin(num))
        print('十进制 %d 转换为八进制是:' % num,oct(num))
        print('十进制 %d 转换为十六进制是:' % num,hex(num))
    elif num == 'q' or num == 'Q':
        print('再见!')
        q = 'False'
   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-6 14:46:07 | 显示全部楼层
ych 发表于 2018-1-6 14:44
#这里不能加“”,会将关键字变成字符串
q = True   

我刚说完关键字不能加“”。。。。。False那里就打自己脸
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 18:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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