python實現模擬數字的魔術遊戲

遊戲介紹

在遊戲中,魔術師要每位觀眾心裡想一個三位數abc (a、b、c分別是百位、十位和個位數字),然後魔術師讓觀眾心中記下acb、bac、bca、cab、cba五個數以及這5個數的和值。隻要觀眾說出這個和是多少,則魔術師一定能猜出觀眾心裡想的原數abc是多少。例如,觀眾甲說他計算的和值是1999,則魔術師立即說出他想的數是443,而觀眾乙說他計算的和值是1998,則魔術師說:“你算錯瞭!”。

【輸入】

輸入一個正整數。

【輸出】

輸出對應的三位數。如果對應的三位數不存在,則輸出:“Thesum you calculated is wrong!”。

【輸入示例】

1998

【輸出示例】

The sum you calculated is wrong!

解題思路

簡單粗暴的進行循環賦值比較

涉及的知識點

  • python基礎語法
  • 字符串類型和數字類型的相互轉換
  • range()內置函數的使用
  • for循環的嵌套使用
  • if-else結構語句的使用

主要代碼

def magic_numbers():
    '''
    魔術數字,根據數據總和推算原始數據
    核心思想:依次將0-9賦值給abc,進行循環比較後得出結果
    '''
    # 用戶算出的數字總和,需要轉換數據類型
    user_input = int(input('請輸入數字的總和:\n'))
    # 默認用戶失敗時的輸出結果
    result = 'The sum you calculated is wrong!'

    #3層嵌套for循環依次對abc進行賦值
    for a in range(10):
        for b in range(10):
            for c in range(10):

                # 將數字裝換為字符串進行排列組合和拼接
                a = str(a)
                b = str(b)
                c = str(c)

                # 要將拼接好的字符串組合重新轉換為數字類型 即int
                acb = int(a+c+b)
                bac = int(b+a+c)
                bca = int(b+c+a)
                cab = int(c+a+b)
                cba = int(c+b+a)
    
                # 計算出每種排列組合後的數字的總和
                sum = acb + bac + bca + cab + cba

                # 用排列組合的總和與用戶給出的總和進行比較,相等則正確,並排列出abc的值,輸出
                if sum == user_input:
                    abc = int(a+b+c)
                    # 將默認的失敗值置空,備後面判斷使用
                    result = ''
                    print('The original number is : ',abc)
    
    # 循環完成後判斷默認的失敗值是否改變,如果沒有改變則直接輸出,表示用戶計算錯誤
    if result != '':
        print(result)

以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: