python第15讲课后作业动动手问题
想改进一下程序加入一个输入限制条件使输入只能是数字类型,但是运行之后导致运行显示两遍不知道是哪里的问题我的代码如下:char='abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPRSTUVWXYZ'
q=True
while q:
word=input('请输入转换的数字:')
for each in word:
if each in char:
print('请重新输入!')
break
if word!='Q':
word=int(word)
print('十进制 -> 十六进制 : %d -> 0x%x' %(word,word))
print('十进制 -> 八进制 : %d -> 0o%o' %(word,word))
print('十进制 -> 二进制 :%d->' % word,bin(word))
else:
q=False
运行结果如下:
本帖最后由 sunrise085 于 2020-11-19 16:09 编辑
你的这个for循环目的是啥?
你输入78的时候,word是字符串‘78’
然后用for循环遍历这个字符串,当然会循环两遍啦
你若输入 65535 ,那么结果会输出5遍
而且你的这个程序不可能执行到else那里,因为若word中有字母,就break跳出了,若是只有数字则会执行if。 按照你完整的代码来看,应该是你搞错了缩进char='abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPRSTUVWXYZ'
q=True
while q:
word=input('请输入转换的数字:')
for each in word:
if each in char:
print('请重新输入!')
break
if word!='Q':
word=int(word)
print('十进制 -> 十六进制 : %d -> 0x%x' %(word,word))
print('十进制 -> 八进制 : %d -> 0o%o' %(word,word))
print('十进制 -> 二进制 :%d->' % word,bin(word))
else:
q=False
而且你这个判断太死了,如果输入了中文和特殊符号,肯定报错的,可以改成这样q=True
while q:
word=input('请输入转换的数字:')
if not word.isdigit():
print('请重新输入!')
continue
if word!='Q':
word=int(word)
print('十进制 -> 十六进制 : %d -> 0x%x' %(word,word))
print('十进制 -> 八进制 : %d -> 0o%o' %(word,word))
print('十进制 -> 二进制 :%d->' % word,bin(word))
else:
q=False 运行两遍的原因是你使用了for循环,输入的内容有多少个元素就会循环多少遍
另外你的逻辑是做一个判断列表,输入的内容是在列表中时,重新输入
输入的内容不在列表时转化成整型
输入大写"Q"时终止
没有判断特殊符号等情况
做了一些修改
q=True
while q:
word=input('请输入转换的数字:')
if word != 'Q':
try:
word = int(word)
print('十进制 -> 十六进制 : %d -> 0x%x' %(word,word))
print('十进制 -> 八进制 : %d -> 0o%o' %(word,word))
print('十进制 -> 二进制 :%d->' % word,bin(word))
break
except:
print('请重新输入!')
else:
break
本帖最后由 jackz007 于 2020-11-19 16:36 编辑
你不能把打印数值也纳入到 for each in word 的循环体内,怎么也得放到循环结束才能最后决断应该怎么办。
q = True
while q:
s = input('请输入转换的数字:') . strip()
if s . isdigit() :
word = int(s)
print('十进制 -> 十六进制 : %d -> 0x%x' %(word,word))
print('十进制 -> 八进制 : %d -> 0o%o' %(word,word))
print('十进制 -> 二进制 :%d->' % word,bin(word))
else:
if s == 'Q' :
q = False
else:
print('请重新输入!') 非常感谢大家的回复,有的问题自己看好多遍都反应不过来大家一指点就立刻明白了,非常感谢非常感谢! 2012277033 发表于 2020-11-19 16:26
按照你完整的代码来看,应该是你搞错了缩进
而且你这个判断太死了,如果输入了中文和特殊符号,肯定报错 ...
我发现你这样修改之后Q停止就失效了
页:
[1]