cxg1482 发表于 2017-9-22 10:25:00

关于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回车的话,居然错误了,见图

ba21 发表于 2017-9-22 10:44:43


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:45:15

本帖最后由 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('进程已结束')


cxg1482 发表于 2017-9-22 11:10:07

ba21 发表于 2017-9-22 10:44


你的代码有个问题就是当用户输入的不是数字时,程序会报错,不会运行啊

cxg1482 发表于 2017-9-22 11:14:35

ButcherRabbit 发表于 2017-9-22 10:45


按照版主你的代码,如果用户在输入了非数字之后再输入Q只是跳出第一个循环体while not num.isdigit():,实际上按设计意图应该是要跳出整个循环体while 1才行吧,这是我疑惑的地方

ButcherRabbit 发表于 2017-9-22 11:42:33

本帖最后由 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]
查看完整版本: 关于Python课后作业中有道进制转换的题目自己的代码运行错误,求解