2012-03-12 28 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)