学习Python3:201701030
第一步首先是開發環境的搭建
參考:anconda
參考:類庫問題
IDE:pycharm,去官網下載即可,內容前兩篇也有提到
學習目標與計劃
第一周的計劃是自學python,之后周一到周五每天都有作業.
第一天的作業主要是考考基本流程語句,以大一學弟學妹的水平,應該能在限時內做完,但是實現方式會比較差,我給出的答案基本是啟發性的,我帶的七個人都是我親自面試的,悟性還可以,我預估的主要問題是他們能不能開竅.具體內容會在下面提到.
作業講解
問題一,編程語言+邏輯問題
本問題實現的點就三個(循環語句,數組(1,2,3,4),邏輯性問題(數字組合)),沒什么好講的,前兩個點是基本功,最后一個問題是邏輯問題,哪里出錯補哪里.
print("1. 屏幕輸出:1,2,3,4可以組成的互不相同且無重復數組的三位數\n") # 關鍵 # 循環控制;邏輯思考,這個題目比較簡單,不做過多講解for i in range(1, 5):for j in range(1, 5):for k in range(1, 5):if (i != k) and (i != j) and (j != k):print(i * 100 + j * 10 + k)問題二,編程語言+領域知識
question2 = "2.一只理財產品投入一萬元,第一年利率為0.1,第二年為0.2,第三年為0.3,第三年為0.4,\n以此類推最多十年,編寫程序,輸入數字可求n年后收益與投入總價,\n(1)復利時(2)非復利時"print(question2)# 這個題目的實現方式十分簡單,可以說是簡單至極,僅僅寫最簡單的代碼一個一個添加就可以實現 # 但是,在python中該問題的實現方式卻不僅僅局限于一般性的流程控制語句 # 我給出的答案是 基于lambda 的,這是python與C++與java8之前語法的不同之處 # 擴展: 函數式編程 與 面向對象編程base_money = 10000years = int(input("請輸入要計算的年份")) print(base_money * (1 + sum(range(1, years)) / 10)) all_money_list = [10000 * (1 + i / 10) for i in range(1, years)] # 列表解析,函數式編程的一大亮點 print(sum(all_money_list) - years * 10000 + 2 * 10000)def ShowAll(): # 展示所有年份for i in range(1, 11):years = iprint(base_money * (1 + sum(range(1, years)) / 10))all_money_list = [10000 * (1 + i / 10) for i in range(1, years)]print(sum(all_money_list) - years * 10000 + 2 * 10000)# 注意觀察輸出數據的類型變化# lambda all_money_list2 = [j for j in [(1 + i / 10) for i in range(0, years)]]def GetResult(money):return lambda y: money * ygetResult = GetResult(base_money) final_money = 0 for i in all_money_list2: final_money = getResult(i)print("非復利,使用lambda表達式", final_money)for i in all_money_list2: base_money = base_money * i print("復利:", base_money)money_rate = 1 for i in all_money_list2: money_rate = money_rate * i print(money_rate) print("復利:,使用lambda表達式", GetResult(10000)(money_rate))關鍵點:輸入數字,計算,專業名詞(復利).
前兩個點屬于基本功范疇,本處的專業名詞比較簡單,但是算是一個開始,因為我們的學科特殊性,領域知識幾乎是我們面對的問題.
本處不太一樣的地方就是,我給出的參考答案是以lambda表達式實現的,學弟學妹們還沒有接觸這個.
我給出了擴展提示,這也是很重要的一個內容.
問題三,編程語言
print("3. 題目:一個整數,它加上100后是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?(求1-100000內數字)\n")# 基本語法考核,基本功import mathfor i in range(100000):x = int(math.sqrt(i + 100))y = int(math.sqrt(i + 268))if (x * x == i + 100) and (y * y == i + 268):print(i)問題四,編程語言+領域知識+邏輯問題
question4 = \"\4.\題目:輸入某年某月某日,判斷這一天是這一年的第幾天?\1.程序分析:以3月5日為例,應該先把前兩個月的加起來,然后再加上5天即本年的第幾天,特殊\情況,閏年且輸入月份大于3時需考慮多加一天。\2.程序源代碼:\" print(question4)# 該問題的算法實現存在多樣性,我想看看大家寫的.year = int(input('year:\n')) month = int(input('month:\n')) day = int(input('day:\n'))months = (0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334) # 這只是實現方式中的一種 if 0 <= month <= 12:sum = months[month - 1] else:print('data error') sum += day leap = 0 if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)): # 檢查是否閏年leap = 1 if (leap == 1) and (month > 2):sum += 1 print('it is the %dth day.' % sum)第四個題比較特別的地方就在于實現方式的多樣性,這是一個可表現的亮點.
劃重點的部分
如何學習
學習最重要的是發揮主動性,同時也會有很多技巧性的東西.下面我所寫的東西,希望能培養的主要是分析問題的能力,至于其他想要表達的,(學會了分析問題之后,你可以自己去分析)
學快點,學多點.
可以感覺出我對時間安排的比較近,從發布計劃,到第一次作業僅僅只有一天的間隔.果不其然…萌新學弟學妹們基本上沒什么準備.這次是給大家敲個鐘.希望大家以后能夠發揮主動,講究效率.
對作業關鍵詞進行統計分析
編程語言 = 4 邏輯問題 = 領域知識 = 2這就是前三天的作業重點,每次作業外加一份,可發揮亮點的問題一個
知識點列表循環語句 range(),數組生成 input(),屏幕輸入 基本符號若干 math.sqrt() 數學類庫,開平方擴展def XXXX(): 定義類 %d 占位符 lambda表達式對于代碼的自由思考
總結
以上是生活随笔為你收集整理的学习Python3:201701030的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 9.2 mnist_with_summa
- 下一篇: 9.3 Trains and Evalu