一日一更:學(xué)習(xí)日?qǐng)?bào)

2017年4月17日

今天的學(xué)習(xí)如下:

1)閱讀書籍《Python編程快速上手_讓繁瑣的工作簡單》章節(jié)1,章節(jié)2. 花費(fèi)時(shí)間30分鐘。
由于此前有一定的編程基礎(chǔ)。
本次解決了以下幾個(gè)問題:

  • 關(guān)于學(xué)習(xí)方法: 學(xué)會(huì)查看Python的相關(guān)資料和文檔,熟悉Python函數(shù),模塊的用法。
    網(wǎng)址有:https://docs.python.org

  • 第二章:流程控制:
    在學(xué)習(xí)流程控制的章節(jié)中,在寫代碼前,利用流程圖梳理控制流程。

章節(jié)2的練習(xí)題:
利用for,while 寫出1-10的數(shù)字。number可以去掉。

#!usr/bin/env python 
for i in range(1,11):
   print(" number %s" %(i))


i=0
while i<=10:
   print("number %s" %(i))
   i+=1

2017年4月18日

今天的學(xué)習(xí)如下:

1)閱讀書籍《Python編程快速上手_讓繁瑣的工作簡單》章節(jié)3&練習(xí). 花費(fèi)時(shí)間40分鐘。
本次獲取了以下知識(shí):

  • 創(chuàng)建函數(shù),函數(shù)中的一些基本概念,關(guān)于return、全局變量與局部變量之間的關(guān)系。一般情況下盡量不要使用全局變量。

  • 返回值以及return語句 以及形式參數(shù)和實(shí)際參數(shù)。

  • 異常處理 try expect ,處理過程有點(diǎn)類似于if 和else。

書中的一個(gè)小程序:猜數(shù)字
源代碼如下:

#!usr/bin/env python 
# guess the number 

# This is a guess the number game.
import random
secretNumber = random.randint(1, 20)
print('I am thinking of a number between 1 and 20.')
# Ask the player to guess 6 times.
for guessesTaken in range(1, 7):
    print('Take a guess.')
    guess = int(input())
    if guess < secretNumber:
        print('Your guess is too low.')
    elif guess > secretNumber:
        print('Your guess is too high.')
    else:
        break # This condition is the correct guess!
if guess == secretNumber:
    print('Good job! You guessed my number in ' + str(guessesTaken) + ' guesses!')
else:
    print('Nope. The number I was thinking of was ' + str(secretNumber))
  • 從上述源代碼可以獲取的知識(shí)有:
  • 如果要導(dǎo)入模塊(函數(shù)&函數(shù)集合)使用import,代碼中導(dǎo)入了隨機(jī)random,用于來生成隨機(jī)數(shù),而生成1-20的隨機(jī)整數(shù),則是用了這樣的寫法:random.randint(1,20)
  • 對(duì)猜詞的次數(shù)做限制:使用for i in range(1,7),并用控制流if else 以及break
  • 輸入的內(nèi)容:input,int(input()) 將輸入內(nèi)容強(qiáng)制轉(zhuǎn)換為int,當(dāng)然還可以利用try expect做異常處理。

本章的練習(xí)&小實(shí)踐:
1)練習(xí)的部分為對(duì)函數(shù)的基礎(chǔ)概念理解。
2) 實(shí)踐:

編寫一個(gè)名為 collatz()的函數(shù),它有一個(gè)名為 number 的參數(shù)。如果參數(shù)是偶數(shù),
那么 collatz()就打印出 number // 2,并返回該值。如果 number 是奇數(shù),collatz()就打
印并返回 3 * number + 1。
然后編寫一個(gè)程序,讓用戶輸入一個(gè)整數(shù),并不斷對(duì)這個(gè)數(shù)調(diào)用 collatz(),直
到函數(shù)返回值1(令人驚奇的是,這個(gè)序列對(duì)于任何整數(shù)都有效,利用這個(gè)序列,
你遲早會(huì)得到 1!既使數(shù)學(xué)家也不能確定為什么。你的程序在研究所謂的“Collatz
序列”,它有時(shí)候被稱為“最簡單的、不可能的數(shù)學(xué)問題”)。

提示:

提示:如果 number % 2 == 0,整數(shù) number 就是偶數(shù),如果 number % 2 == 1,它
就是奇數(shù)。

個(gè)人解答代碼:


#!usr/bin/env python 

def collatz(number):  # define a function named collatz
    if number%2==0:
        return number//2
    else:
        return 3*number+1

# print ('enter a number:')
try:
    number_enter=int(input('enter a number'))
    while number_enter!=1:
           number_enter=collatz(number_enter)
           print(number_enter)
           if number_enter==1:
                print (number_enter)
                break 
# enter number 
except ValueError:
    print("plz enter a number not a string")
# except ValueError:
#   pass

解答過程的心路歷程與收獲總結(jié):
1) 首先按照題目要求編寫了函數(shù),collat() 傳遞參數(shù),使用return 返回值。在編寫過程中,使用print()來查看最終結(jié)果。
2) 在要求重復(fù)調(diào)用函數(shù)上,想到了使用while,一開始使用while True,后來將True的條件更換為!=1 。并使用了break,讓條件成立時(shí),終止循環(huán)。
3)在try的代碼里,一開始while代碼并未包含在其中,導(dǎo)致出現(xiàn)兩次valueerror,經(jīng)過反思,try 捕捉異常的處理方式與if 流程類似,于是做了更改。

本次學(xué)習(xí)總結(jié):

1)完成的代碼是一個(gè)調(diào)試+設(shè)計(jì)的過程,調(diào)試的方法有待進(jìn)一步學(xué)習(xí)。
2)下一次學(xué)習(xí)list的內(nèi)容。

2017年4月19日

今天的學(xué)習(xí)如下

1)《Python編程快速上手_讓繁瑣的工作簡單》章節(jié)4 list 閱讀&練習(xí) 耗時(shí)70分鐘左右
本次獲取了以下的知識(shí):

  • 理解list 是什么?有哪些方法,以及與之關(guān)聯(lián)的字典,元組還有字符串,某種程度的可以理解為python的數(shù)據(jù)結(jié)構(gòu)?
  • 解決問題:
實(shí)踐練習(xí)

這個(gè)問題:最后解決了。
但是過程還是需要說一說:

1)解決問題要理解問題的本質(zhì):這個(gè)問題的本質(zhì)是X,Y的交換,打印出想要的內(nèi)容。
2)在寫代碼前,我嘗試將這個(gè)問題抽象成另外一個(gè)問題,寫了一段所謂的調(diào)試代碼,然而,不行!因?yàn)闆]有抓住問題的本質(zhì)。
3)知識(shí)之間的關(guān)聯(lián)性,可以借鑒前一章的內(nèi)容來理解這一章的問題。

最后是解決的代碼:
grid = [['.', '.', '.', '.', '.', '.'],
        ['.', 'O', 'O', '.', '.', '.'],
        ['O', 'O', 'O', 'O', '.', '.'],
        ['O', 'O', 'O', 'O', 'O', '.'],
        ['.', 'O', 'O', 'O', 'O', 'O'],
        ['O', 'O', 'O', 'O', 'O', '.'],
        ['O', 'O', 'O', 'O', '.', '.'],
        ['.', 'O', 'O', '.', '.', '.'],
        ['.', '.', '.', '.', '.', '.']]


def dodd(rod):
    for i in range(len(grid[0])):
        for j in range(len(grid)):
            print(grid[j][i],end="")
            
        # print('')
        print("\n")
    # print('\n')

dodd(grid)

2017年4月25日

今天的學(xué)習(xí)如下

今天學(xué)習(xí)了一些Linux的內(nèi)容,關(guān)于在CentOS上安裝httpd服務(wù)。耗時(shí)約1個(gè)小時(shí)。

環(huán)境介紹:

當(dāng)前的環(huán)境是虛擬機(jī)virtualbox 下安裝的CentOS6 ,與7版本不同httpd2.4的服務(wù)內(nèi)置在7中,不存在考慮依賴關(guān)系,直接使用yum或者rpm包安裝即可。因此6版本需要通過編譯安裝httpd2.4。
那么我先解決的問題:
1,虛擬機(jī)聯(lián)通網(wǎng)絡(luò):將虛擬機(jī)的網(wǎng)絡(luò)配置改為橋接模式。
2, 獲取apr-*相關(guān)的安裝包進(jìn)行解壓,編譯安裝。
解決以上問題參考的文檔:
http://www.centoscn.com/image-text/config/2015/0627/5741.html

實(shí)際操作:
1)yum groupinstall
"Development Tools" "Server Platform Development " -y 先安裝dev的相關(guān)tools吧。
2)下載安裝相關(guān)的軟件包:

  • 在Apache官網(wǎng)上下載apr軟件以及httpd2.4軟件 執(zhí)行如下命令:
    wget http://apache.fayea.com/apr/apr-util-1.5.4.tar.bz2
    wget http://apache.fayea.com/apr/apr-1.5.2.tar.gz
  • 編譯安裝httpd的內(nèi)容,獲取httpd2.4
    wget http://apache.fayea.com/httpd/httpd-2.4.25.tar.bz2
    安裝apr[root@parparxy tmp]# tar xf apr-1.5.2.tar.bz2[root@parparxy tmp]# cd apr-1.5.2[root@parparxy apr-1.5.2]# ./configure --prefix=/usr/local/apr[root@parparxy apr-1.5.2]# make && make install
    安裝apr-util[root@parparxy tmp]# tar xf apr-util-1.5.4.tar.gz
    [root@parparxy tmp]# cd apr-util-1.5.4
    [root@parparxy apr-util-1.5.4]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr[root@parparxy apr-util-1.5.4]# make && make install

依照文檔的順序進(jìn)行編譯安裝,暫時(shí)沒有出現(xiàn)問題。
接下來解壓,編譯安裝httpd2.4的內(nèi)容。即今天關(guān)于Linux的學(xué)習(xí)內(nèi)容告一段落。

關(guān)于Python快速上手的閱讀 耗時(shí)約1個(gè)小時(shí)。

第六章學(xué)習(xí)的內(nèi)容是:string 關(guān)于字符串的操作
我提出了以下幾個(gè)問題,并轉(zhuǎn)換成了讀書筆記:

  • 字符串有哪些操作方法?
    字符串方法 upper()、lower()、isupper()和 islower()
    in 或者not in 操作符
    字符串下標(biāo)和切片
    isX字符串方法,返回TRUE
    字符串方法 startswith()和 endswith()
    字符串方法 join()和 split()
    用 rjust()、ljust()和 center()方法對(duì)齊文本
    用 strip()、rstrip()和 lstrip()刪除空白字符

  • 字符串與其他的字典以及列表有啥區(qū)別不同?

  • 字符串與前面的知識(shí)點(diǎn)結(jié)合?
    與前面列表,字典以及function相結(jié)合,對(duì)string進(jìn)行操作。

  • string的第三方模塊?
    第三方模塊的使用方法是import模式,導(dǎo)入第三方模塊。
    下面一段代碼的作用主要是解決在系統(tǒng)范圍內(nèi)copy和paste問題。

>>> import pyperclip
>>> pyperclip.copy('Hello world!')
>>> pyperclip.paste()
'Hello world!'

在IDLE之外運(yùn)行Python腳本的方法?

? 在 Windows 上,第一行是 #! python3。
? 在 OS X,第一行是 #! /usr/bin/env python3。
? 在 Linux 上,第一行是 #! /usr/bin/python3
除此以外還要在Windows上考慮環(huán)境變量的問題。

另外最后有兩個(gè)項(xiàng)目需要去實(shí)踐以及練習(xí),這些就留在下次解決。
待解決的問題:

  • 口令保管箱

  • 表格打印

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容