关于Python课后作业中有道进制转换的题目自己的代码运行错误,求解
while 1:num = input("请输入一个整数(输入Q结束程序):")
if num == 'Q':
break
while not num.isdigit():
if num != "Q":
num = input("请输入一个整数(输入Q结束程序):")
if num == 'Q':
break
break
num = int(num)
print('十进制->十六进制', '%#x' % num)
print('十进制->八进制', '%#o' % num)
print('十进制->二进制', bin(num))
但我运行起来 ,连续输入两次p回车的话,居然错误了,见图
while 1:
num = input("请输入一个整数(输入Q结束程序):")
if num.isdigit():
num = int(num)
print('十进制->十六进制', '%#x' % num)
print('十进制->八进制', '%#o' % num)
print('十进制->二进制', bin(num))
else:
if num == 'Q':
break
本帖最后由 ButcherRabbit 于 2017-9-22 10:48 编辑
while 1:
num = input("请输入一个整数(输入Q结束程序):")
while not num.isdigit():
if num != "Q":
num = input("请输入一个整数(输入Q结束程序):")
else:
break
if num == 'Q':
break
num = int(num)
print('十进制->十六进制', '%#x' % num)
print('十进制->八进制', '%#o' % num)
print('十进制->二进制', bin(num))
print('进程已结束')
ba21 发表于 2017-9-22 10:44
你的代码有个问题就是当用户输入的不是数字时,程序会报错,不会运行啊 ButcherRabbit 发表于 2017-9-22 10:45
按照版主你的代码,如果用户在输入了非数字之后再输入Q只是跳出第一个循环体while not num.isdigit():,实际上按设计意图应该是要跳出整个循环体while 1才行吧,这是我疑惑的地方 本帖最后由 ButcherRabbit 于 2017-9-22 11:43 编辑
cxg1482 发表于 2017-9-22 11:14
按照版主你的代码,如果用户在输入了非数字之后再输入Q只是跳出第一个循环体while not num.isdigit():, ...
while not num.isdigit():
if num != "Q":
num = input("请输入一个整数(输入Q结束程序):")
if num == 'Q':
break
break
你这样写while not num.isdigit():只会做一次判断,且再次输入字母的话,也会报你提出的错误,因为还会执行num = int(num)
while one:
while two:
break
不管while two里有多少个break,只能跳出while two 的循环,不会跳出while one 的循环
页:
[1]