一日一更:学习日报
2017年4月17日
今天的学习如下:
1)阅读书籍《Python编程快速上手_让繁琐的工作简单》章节1,章节2. 花费时间30分钟。
由于此前有一定的编程基础。
本次解决了以下几个问题:
-
关于学习方法: 学会查看Python的相关资料和文档,熟悉Python函数,模块的用法。
网址有:https://docs.python.org -
第二章:流程控制:
在学习流程控制的章节中,在写代码前,利用流程图梳理控制流程。
章节2的练习题:
利用for,while 写出1-10的数字。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日
今天的学习如下:
1)阅读书籍《Python编程快速上手_让繁琐的工作简单》章节3&练习. 花费时间40分钟。
本次获取了以下知识:
-
创建函数,函数中的一些基本概念,关于return、全局变量与局部变量之间的关系。一般情况下尽量不要使用全局变量。
-
返回值以及return语句 以及形式参数和实际参数。
-
异常处理 try expect ,处理过程有点类似于if 和else。
书中的一个小程序:猜数字
源代码如下:
#!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))
- 从上述源代码可以获取的知识有:
- 如果要导入模块(函数&函数集合)使用import,代码中导入了随机random,用于来生成随机数,而生成1-20的随机整数,则是用了这样的写法:random.randint(1,20)
- 对猜词的次数做限制:使用for i in range(1,7),并用控制流if else 以及break
- 输入的内容:input,int(input()) 将输入内容强制转换为int,当然还可以利用try expect做异常处理。
本章的练习&小实践:
1)练习的部分为对函数的基础概念理解。
2) 实践:
编写一个名为 collatz()的函数,它有一个名为 number 的参数。如果参数是偶数,
那么 collatz()就打印出 number // 2,并返回该值。如果 number 是奇数,collatz()就打
印并返回 3 * number + 1。
然后编写一个程序,让用户输入一个整数,并不断对这个数调用 collatz(),直
到函数返回值1(令人惊奇的是,这个序列对于任何整数都有效,利用这个序列,
你迟早会得到 1!既使数学家也不能确定为什么。你的程序在研究所谓的“Collatz
序列”,它有时候被称为“最简单的、不可能的数学问题”)。
提示:
提示:如果 number % 2 == 0,整数 number 就是偶数,如果 number % 2 == 1,它
就是奇数。
个人解答代码:
#!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
解答过程的心路历程与收获总结:
1) 首先按照题目要求编写了函数,collat() 传递参数,使用return 返回值。在编写过程中,使用print()来查看最终结果。
2) 在要求重复调用函数上,想到了使用while,一开始使用while True,后来将True的条件更换为!=1 。并使用了break,让条件成立时,终止循环。
3)在try的代码里,一开始while代码并未包含在其中,导致出现两次valueerror,经过反思,try 捕捉异常的处理方式与if 流程类似,于是做了更改。
本次学习总结:
1)完成的代码是一个调试+设计的过程,调试的方法有待进一步学习。
2)下一次学习list的内容。
2017年4月19日
今天的学习如下
1)《Python编程快速上手_让繁琐的工作简单》章节4 list 阅读&练习 耗时70分钟左右
本次获取了以下的知识:
- 理解list 是什么?有哪些方法,以及与之关联的字典,元组还有字符串,某种程度的可以理解为python的数据结构?
- 解决问题:
这个问题:最后解决了。
但是过程还是需要说一说:
1)解决问题要理解问题的本质:这个问题的本质是X,Y的交换,打印出想要的内容。
2)在写代码前,我尝试将这个问题抽象成另外一个问题,写了一段所谓的调试代码,然而,不行!因为没有抓住问题的本质。
3)知识之间的关联性,可以借鉴前一章的内容来理解这一章的问题。
最后是解决的代码:
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日
今天的学习如下
今天学习了一些Linux的内容,关于在CentOS上安装httpd服务。耗时约1个小时。
环境介绍:
当前的环境是虚拟机virtualbox 下安装的CentOS6 ,与7版本不同httpd2.4的服务内置在7中,不存在考虑依赖关系,直接使用yum或者rpm包安装即可。因此6版本需要通过编译安装httpd2.4。
那么我先解决的问题:
1,虚拟机联通网络:将虚拟机的网络配置改为桥接模式。
2, 获取apr-*相关的安装包进行解压,编译安装。
解决以上问题参考的文档:
http://www.centoscn.com/image-text/config/2015/0627/5741.html
实际操作:
1)yum groupinstall
"Development Tools" "Server Platform Development " -y 先安装dev的相关tools吧。
2)下载安装相关的软件包:
- 在Apache官网上下载apr软件以及httpd2.4软件 执行如下命令:
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的内容,获取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
依照文档的顺序进行编译安装,暂时没有出现问题。
接下来解压,编译安装httpd2.4的内容。即今天关于Linux的学习内容告一段落。
关于Python快速上手的阅读 耗时约1个小时。
第六章学习的内容是:string 关于字符串的操作
我提出了以下几个问题,并转换成了读书笔记:
-
字符串有哪些操作方法?
字符串方法 upper()、lower()、isupper()和 islower()
in 或者not in 操作符
字符串下标和切片
isX字符串方法,返回TRUE
字符串方法 startswith()和 endswith()
字符串方法 join()和 split()
用 rjust()、ljust()和 center()方法对齐文本
用 strip()、rstrip()和 lstrip()删除空白字符 -
字符串与其他的字典以及列表有啥区别不同?
-
字符串与前面的知识点结合?
与前面列表,字典以及function相结合,对string进行操作。 -
string的第三方模块?
第三方模块的使用方法是import模式,导入第三方模块。
下面一段代码的作用主要是解决在系统范围内copy和paste问题。
>>> import pyperclip
>>> pyperclip.copy('Hello world!')
>>> pyperclip.paste()
'Hello world!'
在IDLE之外运行Python脚本的方法?
在 Windows 上,第一行是 #! python3。
在 OS X,第一行是 #! /usr/bin/env python3。
在 Linux 上,第一行是 #! /usr/bin/python3
除此以外还要在Windows上考虑环境变量的问题。
另外最后有两个项目需要去实践以及练习,这些就留在下次解决。
待解决的问题:
-
口令保管箱
-
表格打印