Python程序没有显示输出

时间:2012-03-12 19:48:38

标签: python

  

可能重复:
  How can I determine if user input is a valid hexadecimal number?
  Python - Program not displaying as intended

#Hex Check
def Check(HexInput):
    while True:
        if HexInput in Valid:
            print('That is a valid hex number.')
        else:
            print('That is an invalid hex number.')
        return HexInput       

HexInput=input('Enter a hex number: ')
Valid='1234567890ABCDEFG'

程序需要包含Check()。它应该要求用户输入一个十六进制数字并告诉它们它是否是一个有效的十六进制数字。

3 个答案:

答案 0 :(得分:1)

首先,

while False:

永远不会执行。您可以使用“while True:”或“while checked == False:”但不能“使用False:”

您的Check()函数还必须接受参数,使其看起来像

def Check(UserInput, Valid):

您还需要一个额外的“if”语句,因为即使用户输入了无效的十六进制值,程序仍将打印“这是一个有效的十六进制值”。

接下来,

return Check

没有意义,因为你没有任何名为“Check”的变量

最后,您必须实际调用您的函数:

Check(UserInput, Valid)

答案 1 :(得分:0)

目前还不清楚你想在你的程序中做什么,但是为了开始,while False:意味着while循环中的代码将始终被忽略(不执行)

答案 2 :(得分:0)

while的身体False:永远不会执行。

while False:
  print("You will never enter this loop.")
  .
  .
  .

这将执行,但您必须确保测试条件, 所以你可以摆脱循环。那就是你不想无休止地循环。

while True:
      print("You will enter this loop.")
      print("Make sure you test for a condition that will let you "break".)
      break

编辑:你让我检查你的程序。还有一些问题。

使用raw_input而不是input。 http://docs.python.org上的Python教程建议使用raw_input。

你编写程序的方式,如果你有一个多位数字,你需要检查每个数字,这就是Python的用途。

我写了一些粗俗的东西。在我的版本中,你要测试0或非零。如果 零,你没有十六进制数。我确信有更优雅的方式来做到这一点。

我强烈建议在Python命令行中摆弄代码。这就是它的用途。

def Check(HexInput):
    valid_hex_digit = 0 #Assume invalid
    for digit in HexInput:
        if digit in Valid:
            valid_hex_digit = valid_hex_digit + 1
        else:
            error_str = "Invalid hex digit " + str(digit) + " found."
            print(error_str)
            valid_hex_digit = 0
            break

    return valid_hex_digit