2012-03-12 94 views
-5

可能重复:
How can I determine if user input is a valid hexadecimal number?
Python - Program not displaying as intendedPython程序不显示输出

#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' 

计划必须包含检查()。它应该要求用户输入一个十六进制数字,并告诉它们它是否是一个有效的十六进制数字。

+0

请注意,“1”2“3”4“5”6“7”8“9”10“A”B“C”D“E”F ''就是'12345678910ABCDEF''',第二个'1'不需要。 – delnan 2012-03-12 19:51:11

+2

这是一个功课问题吗?如果是,请使用[ho mework]标签。 – 2012-03-12 19:51:38

+0

如果您不要求某人为您编写代码,您将获得更多。建议您在确定哪些问题时寻求帮助。 – octopusgrabbus 2012-03-12 19:57:37

回答

0

目前尚不清楚你想要在你的计划,但对于开始做什么,while False:意味着在while循环代码将始终被忽略(不执行)

+0

我想要求用户输入一个十六进制数字,如果它是一个有效的,输出“有效的十六进制数”,如果没有,输出“无效的十六进制数”循环无关 – user1248367 2012-03-12 19:56:42

+0

请编辑你的问题相应 – 2012-03-12 19:59:52

+0

编辑的程序与正确的,你可以检查? – user1248367 2012-03-12 21:00:27

0

的,而假的身体:决不会执行。

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而不是输入。 Python教程http://docs.python.org建议使用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 
+0

你可以检查我编辑的程序吗? – user1248367 2012-03-12 21:00:15

+0

编辑我的答案。 – octopusgrabbus 2012-03-12 21:50:48

1

首先,

while False: 

永远不会执行。您可以使用“而真正的”或“而检查==假:”但不“而假:”

你检查()函数也必须在参数,这样它看起来像

def Check(UserInput, Valid): 

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

接下来,

return Check 

没有任何意义,因为你没有提到的任何变量 ”检查“

最后,你必须实际调用你的函数,像这样:

Check(UserInput, Valid)