鱼C论坛

 找回密码
 立即注册
查看: 1025|回复: 12

[已解决]015字符串格式化课后作业写一个进制转换程序:对非法输入进行了优化,但提示打印了3遍

[复制链接]
发表于 2018-2-21 23:03:37 | 显示全部楼层 |阅读模式

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

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

x
015字符串格式化课后作业写一个进制转换程序:对非法输入进行了优化,但提示打印了3遍。
问题1:是哪里出了问题呢?
问题2:该如何修改呢?
请大佬们帮助T-T

while True:
    number = input('请输入一个整数(输入Q结束程序):')
    num = '0123456789'
    if number == 'Q':
        break
    else:
        for each in number:
            if each in num:
                break
            else:
                print('输入有误!请重新输入吧。')
        else:
            continue
        temp = int(number)
        print('十进制 -> 十六进制:%d -> %#x' % (temp,temp))
        print('十进制 -> 八进制:%d -> %#o' % (temp,temp))
        print('十进制 -> 二进制:%d ->' % temp,bin(temp))
   

print('程序已退出,请点击右上角的关闭按钮吧^_^')
最佳答案
2018-2-22 10:26:11
屏幕快照 2018-02-21 下午9.25.38.png
这样就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-21 23:18:05 | 显示全部楼层

回帖奖励 +2 鱼币

问题出在else:
                print('输入有误!请重新输入吧。')

你需要修改下程序判断和跳转的条件,不然输入几个字母就报几次错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-22 09:08:30 | 显示全部楼层
大头目 发表于 2018-2-21 23:18
问题出在else:
                print('输入有误!请重新输入吧。')

不好意思,我还是没有理解到,您能再说一下吗?或者举个例子
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-22 09:46:13 From FishC Mobile | 显示全部楼层
for each in number:会历遍你所有的输入内容一个字符一遍,直到countine再返回while
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-22 09:55:17 | 显示全部楼层
首先你重复的原因是因为你for loop会重复print你每一位的元素,你直接在你print后面加一句input就可以了,我的code是这么改的:

屏幕快照 2018-02-21 下午8.50.40.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-22 10:12:55 | 显示全部楼层
junkaiw 发表于 2018-2-22 09:55
首先你重复的原因是因为你for loop会重复print你每一位的元素, 你直接在你print后面加一句input就可以了, ...

还是失败了。。。

请输入一个整数(输入Q结束程序):dsa
输入有误!请重新输入吧。
dfa
输入有误!请重新输入吧。
daf
输入有误!请重新输入吧。
fasd
Traceback (most recent call last):
  File "D:/Python学习/Python问题/1.py", line 14, in <module>
    temp = int(number)
ValueError: invalid literal for int() with base 10: 'fasd'
>>> ff
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    ff
NameError: name 'ff' is not defined
>>> fda
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-22 10:18:37 | 显示全部楼层
重庆帅哥Moses 发表于 2018-2-22 10:12
还是失败了。。。

请输入一个整数(输入Q结束程序):dsa

在那个input下面加一个break,可以解决,但是如果再次输错,会报错,我想想
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-22 10:26:11 | 显示全部楼层    本楼为最佳答案   
屏幕快照 2018-02-21 下午9.25.38.png
这样就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-22 10:27:24 | 显示全部楼层

把输出直接放在满足的条件内输出,如果不满足,直接print然后break 出来就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-22 10:28:43 | 显示全部楼层
好像也不行,我想想
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-22 10:30:59 | 显示全部楼层
junkaiw 发表于 2018-2-22 10:28
好像也不行,我想想

对的对的,把temp=int()里改成number就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-22 11:01:30 | 显示全部楼层

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

使用道具 举报

发表于 2018-2-22 11:05:05 | 显示全部楼层

不不不,也是新手,大家互相探讨
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 11:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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