Skip to content

Commit 4b63191

Browse files
committed
学习中-天天向上的力量
1 parent ecb85cb commit 4b63191

File tree

5 files changed

+253
-1
lines changed

5 files changed

+253
-1
lines changed

3.1-DayDayUpQ1.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# 天天向上的力量
2+
dayup = pow(1.001, 365)
3+
daydown = pow(0.999, 365)
4+
print("向上:{:.2f},向下:{:.2f}".format(dayup, daydown))

3.2-DayDayUpQ2.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# 天天向上的力量
2+
dayfactor = 0.01
3+
dayup = pow(1+dayfactor, 365)
4+
daydown = pow(1-dayfactor, 365)
5+
print("向上:{:.2f},向下:{:.2f}".format(dayup, daydown))

3.3-DayDayUpQ3.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# 工作日的力量Q3
2+
dayup = 1.0 # 基数
3+
dayfactor = 0.01 # 每天向上参数
4+
for i in range(365): # 循环365天
5+
if i % 7 in [6, 0]: # 周末
6+
dayup = dayup * (1 - dayfactor) # 下降
7+
else:
8+
dayup = dayup * (1 + dayfactor) # 提高
9+
print('工作日的力量:{:.2f}'.format(dayup))

3.4-DayDayUpQ4.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Q4
2+
def dayUP(df): # def定义函数dayUP,形参df
3+
dayup = 1
4+
for i in range(365):
5+
if i % 7 in [6, 0]:
6+
dayup = dayup * (1 - 0.01) # 休息日固定下降
7+
else:
8+
dayup = dayup * (1 + df) # 工作日进步
9+
return dayup
10+
dayfactor = 0.01
11+
while dayUP(dayfactor) < 37.78: # while循环
12+
dayfactor += 0.001
13+
print('工作日努力进步{:.1f}%才能追平A君'.format(dayfactor*100))

README.md

Lines changed: 222 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1701,34 +1701,255 @@ abs(-10.01) # 10.01
17011701
#### 5.2 divmod(x,y) 商余操作
17021702

17031703
```python
1704-
# 商余,(x//y,x%y),同时输出整数除和余数
1704+
# 商余,(x//y,x%y),同时输出整数除和余数
17051705
>>> divmod(10,3)
17061706
(3, 1)
17071707
```
17081708

1709+
#### 5.3 pow(x, y [, z]) 第三个参数:幂余
1710+
1711+
```python
1712+
# 幂余, 同(x**y)%z
1713+
>>> pow(3,pow(3,99),10000)
1714+
4587
1715+
```
1716+
1717+
#### 5.4 round(x[,d]) 四舍五入
1718+
1719+
参数d表示保留的小数,默认为0,即取整数。
1720+
1721+
```python
1722+
>>> round(10.123,2)
1723+
10.12
1724+
>>> round(10.123)
1725+
10
1726+
```
1727+
1728+
#### 5.5 max(X1,X2 ... Xn) 取最大值
1729+
1730+
```python
1731+
>>> max(1,5,3)
1732+
5
1733+
```
1734+
1735+
1736+
1737+
#### 5.6 min(X1,X2 ... Xn) 取最小值
1738+
1739+
```python
1740+
>>> min(2,3,-1)
1741+
-1
1742+
```
1743+
1744+
1745+
1746+
#### 5.7 int(x) 去掉小数(或把整数字符串变数字)
1747+
1748+
```python
1749+
>>> int(10.589) # 相当于向下取整
1750+
10
1751+
>>> int("123") # 把数字整数字符串变成数字
1752+
123
1753+
>>> int("123.5") # 报错
1754+
ValueError: invalid literal for int() with base 10: '123.5'
1755+
```
1756+
1757+
#### 5.8 float(x) 变浮点数
1758+
1759+
```python
1760+
>>> float(12)
1761+
12.0
1762+
>>> float('123')
1763+
123.0
1764+
>>> float('123.5')
1765+
123.5
1766+
```
1767+
1768+
#### 5.9 complex(x) 变复数
1769+
1770+
```python
1771+
>>> complex(4) # 将整数变成复数,并增加虚数部分
1772+
(4+0j)
1773+
```
1774+
1775+
1776+
1777+
## 八、例子:天天向上的力量
1778+
1779+
#### 1、需求分析
1780+
1781+
基本问题:持续的价值
1782+
1783+
* 一年365天,每天进步1%,累计进步多少呢?
1784+
1785+
> 形成公式:1.01365次方
1786+
1787+
* 一年365天,每天退步1%,累计剩下多少呢?
1788+
1789+
> 形成公式:0.99365次方
1790+
1791+
1792+
1793+
数学公式可以求解的问题,似乎没必要用到程序?
1794+
1795+
* 如果是"三天打鱼两天晒网"呢?
1796+
* 如果是“双休日不进步”呢?
17091797

17101798

17111799

1800+
#### 2、问题与程序
17121801

1802+
##### 2.1 问题1:1‰的力量
17131803

1804+
* 一年365天,每天进步1‰,累计进步多少呢?
17141805

1806+
> 形成公式:1.001365次方
17151807

1808+
* 一年365天,每天退步1‰,累计剩下多少呢?
17161809

1810+
> 形成公式:0.999365次方
17171811

17181812

17191813

1814+
###### 程序
17201815

1816+
```python
1817+
# 天天向上1‰的力量
1818+
dayup = pow(1.001, 365)
1819+
daydown = pow(0.999, 365)
1820+
print("向上:{:.2f},向下:{:.2f}".format(dayup, daydown))
1821+
1822+
# 运行结果
1823+
# 向上:1.44,向下:0.69
1824+
```
1825+
1826+
**每天只要进步千分之一,一年后的你将成长为基础的1.44倍,**
1827+
1828+
**不再努力的你,一年后只剩下基础的0.69**
1829+
1830+
**千分之一的力量相比不努力相距接近两倍。**
1831+
1832+
1833+
1834+
##### 2.2 问题2:5‰和1%的力量
1835+
1836+
* 一年365天,每天进步5‰或1%,累计进步多少呢?
1837+
1838+
> 形成公式:1.005365次方,1.01365次方
1839+
1840+
* 一年365天,每天退步5‰或1%,累计剩下多少呢?
17211841

1842+
> 形成公式:0.995365次方,0.9936511
17221843

17231844

17241845

1846+
###### 程序
1847+
1848+
```python
1849+
# 天天向上5‰的力量
1850+
dayfactor = 0.005
1851+
dayup = pow(1+dayfactor, 365)
1852+
daydown = pow(1-dayfactor, 365)
1853+
print("向上:{:.2f},向下:{:.2f}".format(dayup, daydown))
1854+
1855+
# 运行结果
1856+
# 向上:6.17,向下:0.16
1857+
```
1858+
1859+
**每天进步5‰,一年进步6**
1860+
1861+
1862+
1863+
```python
1864+
# 天天向上1%的力量
1865+
dayfactor = 0.01
1866+
dayup = pow(1+dayfactor, 365)
1867+
daydown = pow(1-dayfactor, 365)
1868+
print("向上:{:.2f},向下:{:.2f}".format(dayup, daydown))
1869+
1870+
# 运行结果
1871+
# 向上:37.78,向下:0.03
1872+
```
1873+
1874+
**每天进步1%,一年进步37**
1875+
17251876

17261877

17271878

17281879

1880+
##### 2.3 问题3:工作日的力量
17291881

1882+
* 一年365天,一周5个工作日,每天进步1%
1883+
* 一年365天,一周2个休息日,每天退步1%
17301884

17311885

17321886

1887+
###### 由数学思维向计算思维的转变
17331888

1889+
1.01365次方(数学思维) 到 fon..in.. (计算思维) 的转变,
1890+
1891+
用计算机来模拟365天的过程,当遇到工作日向上增加,遇到休息日向下减少,累计循环下来的结果,就得到一年365天的结果。
1892+
1893+
1894+
1895+
###### 程序
1896+
1897+
**采用模拟循环365天,抽象+自动化完成计算出结果**
1898+
1899+
```python
1900+
# 工作日的力量Q3
1901+
dayup = 1.0 # 基数
1902+
dayfactor = 0.01 # 每天向上参数
1903+
for i in range(365): # 循环365天
1904+
if i % 7 in [6, 0]: # 周末
1905+
dayup = dayup * (1 - dayfactor) # 下降
1906+
else:
1907+
dayup = dayup * (1 + dayfactor) # 提高
1908+
print('工作日的力量:{:.2f}'.format(dayup))
1909+
1910+
# 运行结果
1911+
# 工作日的力量:4.63
1912+
```
1913+
1914+
**工作日的力量,一年进步4.63倍**
1915+
1916+
1917+
1918+
##### 2.4 问题4:工作日的努力
1919+
1920+
* 工作日要努力到什么水平,才能与每天努力1%一样?
1921+
* A君: 一年365天,每天进步1%,不停歇
1922+
* B君:一年365天,每周工作日5天休息2天,休息日下降1%,要多努力才能和A一样进步效果呢?
1923+
1924+
###### for...in (计算思维) --> def...while...(“笨办法”试错)
1925+
1926+
**流程图**
1927+
1928+
```mermaid
1929+
graph LR
1930+
1(A君365:1%) --> 3{比较一下}
1931+
2(B君工作日:x%,初始x为1) --> 3
1932+
3 -- 比不过 --> 4(把x加一点儿)
1933+
4 --> 2
1934+
3 -- 比上了 --> 输出结果
1935+
```
1936+
1937+
```python
1938+
# Q4
1939+
def dayUP(df): # def定义函数dayUP,形参df
1940+
dayup = 1
1941+
for i in range(365):
1942+
if i % 7 in [6, 0]:
1943+
dayup = dayup * (1 - 0.01) # 休息日固定下降
1944+
else:
1945+
dayup = dayup * (1 + df) # 工作日进步
1946+
return dayup
1947+
dayfactor = 0.01
1948+
while dayUP(dayfactor) < 37.78: # while循环
1949+
dayfactor += 0.001
1950+
print('工作日努力进步{:.1f}%才能追平A君'.format(dayfactor*100))
1951+
1952+
#工作日努力进步1.9%才能追平A君
1953+
```
17341954

1955+
**工作日努力进步1.9%才能追平A君**

0 commit comments

Comments
 (0)