好玩的Python:植樹問題,平閏年,雞兔同籠,百錢白雞,屬相問題

Python用來解決日常生活中的小問題很容的。

# 植樹問題ntotal = 1nage = 1nnwhile total <= 100:n age += 1n total += agennprint("小明{}歲的時候樹超過100棵".format(age))n

image.png

# 有若干只雞兔同在一個籠子里,從上面數,有35個頭,從下面數,有94隻腳。問籠中各有多少只雞和兔?nn# 窮舉法n# 列表推導式如果不理解,代碼不容易懂n# list = [(chicken, rabbit) for chicken in range(0,35) for rabbit in range(35) if (2 * chicken + 4 * rabbit) == 94 and (chicken + rabbit) == 35]nfor chicken in range(35):n for rabbit in range(35):n if (2 * chicken + 4 * rabbit) == 94 and (chicken + rabbit) == 35:n print("一共有{}只雞,{}只兔子".format(chicken, rabbit))n

image.png

# 閏年是公曆中的名詞。n# 普通年能整除4且不能整除100的為閏年。(如2004年就是閏年,1900年不是閏年);n# 世紀年能整除400的是閏年。(如2000年是閏年,1900年不是閏年);n# 對於數值很大的年份,這年如果能被3200整除,並且能被172800整除則是閏年。n# 如172800年是閏年,86400年不是閏年(因為雖然能被3200整除,但不能被172800整除)。nnwhile True:n # 循環判斷n year = input("請輸入年份:")n # input得到的是字元串n # 需要用int方法轉換為整數n year = int(year)nn if (year % 4 ==0 and year % 100 != 0) or (year % 400 == 0):n # 括弧不是必須的但是有利於理解代碼n print("{}年是閏年".format(year))n else:n print("{}年是平年".format(year))n

image.png

# 判斷屬相n# 小時候大人教我用手算屬相n# 那時候可是聰明的象徵呢nzodiac = ["子鼠", "丑牛", "寅虎", "卯兔", "辰龍", "巳蛇", "午馬", "未羊", "申猴", "酉雞", "徐狗", "亥豬"]nn# 講解獲取證書值輸入的辦法nage_str = input("請輸入你的年齡:")nnyour_age = int(age_str)nnprint("您今年{}歲,您的屬相是{}".format(your_age, zodiac[10 - your_age % 12]))n# 屬相要考慮周歲和虛歲的問題,然後這個演算法年齡扣掉整數的12歲之後,然後計算的n

image.png

這是一個讓人憂傷的結果

# 我國古代數學家張丘建在《算經》一書中提出的數學問題:雞翁一值錢五,雞母一值錢三,雞雛三值錢一。n# 百錢買百雞,問雞翁、雞母、雞雛各幾何?nn# 採用最暴力的枚舉法n# 沒有做任何優化n# 可以根據數學知識對程序進行優化n# 親愛的老師們考慮下怎麼優化n# 判斷也可以改成嵌套n# 判斷的層數可以減少nfor chicken_papa in range(100):n for chicken_mama in range(100):n for chicken_kids in range(100):n if (chicken_papa * 5 + chicken_mama * 3 + chicken_kids / 3) == 100 and (chicken_papa + chicken_mama + chicken_kids == 100):n #講解的時候注意條件表達式的括弧n print("百錢買百雞,問雞翁{}雞母{}雞雛{}".format(chicken_papa, chicken_mama, chicken_kids))n

image.png

# 九九乘法表n# range函數具體用法n# http://www.runoob.com/python/python-func-range.htmlnfor x in range(1, 10):n for y in range(1, x + 1):n print("{} x {} = {}".format(x, y, x * y))nnnfor x in range(1, 10):n str = ""n for y in range(1, x + 1):n str += "{} x {} = {} ".format(x, y, x * y)n print(str)n

image.png

歲月空長,徒增惆悵啊。

推薦閱讀:

Scratch零基礎魔法編程(一)為什麼你要學Scratch兒童編程
oh my god,美國的編程都從寶寶抓起了!
為什麼寫這本書?少兒編程《輕鬆玩轉Scratch編程》

TAG:Python | 儿童编程 |