2017-10-12 69 views
0

這只是一個簡單的遊戲,我試圖將它們問到幾個問題,然後自動將答案中的新密碼格式化。我該如何壓縮這個簡單的python程序,使其更高效?

由於我是初學者,我想知道一些我可以使用的技術,這會提高此代碼的效率,也許可以刪除我聲明的瘋狂數量的函數。謝謝!

minimum = 3 
maximum = 10 

name = input("What is your name? ") 

def nameInput(): 

    if len(name) < minimum: 
     print("Name is too small") 
     return nameInput() 
    elif len(name) > maximum: 
      print("Name is too large") 
      return nameInput() 

nameInput() 

food = input("What is your favorite food? ") 

def foodInput(): 

    if len(food) < minimum: 
     print("Enter a food name longer than " + (food)) 
     return foodInput() 
    elif len(food) > maximum: 
      print("Enter a food name shorter than " + (food)) 
      return foodInput() 

foodInput() 

birthday = input("What is your date of birth? (mmddyyyy) ") 

nameIndex = name[0:2] 
foodIndex = food[2: ] 
birthIndex = birthday[0:3] 

passcode = nameIndex + foodIndex + birthIndex 

print("Your password is " + passcode) 
+1

有兩種功能。我不會認爲這是一個「瘋狂的數額」。 – mkrieger1

+1

您可以創建一個函數'get_input(question,min_len,max_len)' – mshsayem

+5

如果您願意接受關於代碼所有方面的反饋,除了縮短代碼長度,您可以將其發佈到https://codereview.stackexchange .COM /。 – mkrieger1

回答

1

如果你是簡潔後,儘量使用同一個函數多次,而不是多個功能的單一時間

def get_input(variable_name, min_size, max_size, begin, end):     
    data = input("What is your {}? ".format(variable_name))     
    if len(data) < min_size:             
     raise ValueError('{} is too small'.format(variable_name.capitalize())) 
    elif len(data) > max_size:             
     raise ValueError('{} is too big'.format(variable_name.capitalize())) 
    return data[begin:end]              

name_index = get_input("name", 3, 10, 0, 2)         
food_index = get_input("food", 3, 10, 2, 100)         
birth_index = get_input("date of birth (mmddyyyy)", 3, 10, 0, 3)    
passcode = name_index + food_index + birth_index        

print("Your passcode is", passcode)                 
+0

最好不要使用'assert'進行流量控制(請參閱https://stackoverflow.com/questions/944592/best-practice-for-python-assert/945135#945135)。 – mkrieger1

+1

呵呵,TIL。編輯回覆使用例外。 – triphook

+0

謝謝,這幾乎正是我所需要的!我只需要定製一下。 – Jake