让编程更有爱的一点 - 继续小小日记
更新日志
20151024 增加哥哥写的日记
20151020 创建
小小日记任务回顾
- 完成一个极简交互式日记系统,需求如下:
- 一次接收输入一行日记
- 保存为本地文件
- 再次运行系统时,能打印出过往的所有日记
- 第一次笔记
思考二
看issue回复的时候,觉得是不是还是在py里面进行互动和输入会更好一些?
这样界面会更友好,提示性也更强一些,
不会出现我自己过了好久都不记得怎么用的情况,
别人用起来也觉得一目了然,不用去翻帮助文档。
同时,互动文字可以让程序更有爱一些。
感觉好像有一个人在和你对话,而不是硬邦邦的代码。
记得看那本和game有关的python的书时,最打动我的就是它的举例的程序,运用的互动语言都很有感情,让我觉得编程原来也可以是这么有感情的事。
- 输入diary.py
- 出现提示:
- Hi. I am the diary of yours.
- Do you have something want to share with me now?
- Or you can just press Enter to read all of me.
- open file 'diary' , append mode
- newDiary=input()
- 出现提示:
- Thank you for sharing with me.
- Bye. I will miss you.
- close file
尝试四:
感觉大家还是使用python2的比较多。
所以这次编程准备在python2.7的环境下编写。
Question
- input() not working in python2
- 没发现中文有什么问题呀,大妈说的中文输入问题到底指的是什么呢?
Solution
Use raw_input() instead of input():
testVar = raw_input("Ask user for something.")
input() actually evaluates the input as Python code.
I suggest to never use it.
raw_input() returns the verbatim string entered by the user.Although for anyone reading this using Python 3, input now works this way, and raw_input is gone.
via Python 2.7 getting user input and manipulating as string without quotations
代码
import time
print('Hi, I am the diary of yours.')
print('Do you have something want to share with me now?')
print('Or you can just press Enter to read all of me.')
diary = raw_input('>>')
if diary == '':
diaryFile = open('diary.txt')
diary = diaryFile.read()
print(diary)
else:
diaryFile = open('diary.txt','a')
diaryFile.write('\n' + time.strftime('%Y/%m/%d')+ ' ' +diary)
print('Thank you for sharing with me.')
print('Bye. I will miss you.')
diaryFile.close()
思考三
再次受到issue的启发,
包括那时候上Kunal的课,其实最感动的是,当他们用python写出一些很简单但充满爱的小程序,和他们所爱的人一起分享的时刻。
无论是给自己的小孩子上一课超简单的python课,还是用python做出一个小小照片游戏,告诉自己亲爱的人,说爱你。
我想,这是我觉得python最有爱的时刻,也是最最让我感动的时刻。
那些程序是那样的简单,却让我真的感觉到,这样简单的事情是如此的有意义。
我想,为什么要把编程这件事搞得好像那么深奥和复杂呢,好像难以和不了解编程的人沟通呢?
想起之前都是自己在这里看视频,学写代码,感觉好像也不知道怎么和老公说这件事情一样,为什么不用一种别的形式来一起分享这个过程呢?
包括他问起来我写了些什么,我好像一下子也难以描述清楚。
为什么不把这件事情从自娱自乐,转变成和他一起来分享呢?
虽然我自己也觉得好玩啦,不过是不是之前根本没这么想过?
是这件事情很难,还是我根本没有尝试过呢?
失败也没有关系啦,起码我也可以看看他的反馈,自己再改进嘛。
而且我觉得这样应该还蛮好玩的。
喵,好高兴今天突然想起了那时候Kunal传达给我的这种充满爱的感觉。
让我感觉,编程就是生活的一部分,编程让生命更有爱。
编程不仅仅是关于计算机,更是关于人,关于我所爱的人。
About People.
About Love.
About Life.
Zoe, remember this feeling.
尝试五 - Special Version for 哥哥
- 这次界面要用中文写啦。
Question
- 才发现mac下的idle是不能写中文的...
Solution
- IDLE 下中文输入法失效。这是因为 IDLE 界面使用的 Tkinter 需要依赖 Tcl/Tk,而系统自带的 Tcl/Tk 版本太低,造成了不兼容的问题。
可以下载新版本
或者用homebrew安装brew install tcl-tk
via mac下的 idle为何不能输入中文?该如何解决?
测试后,还是不行
- 根据IDLE的WARNING: The version of Tcl/Tk (8.5.9) in use may be unstable.
Visit http://www.python.org/download/mac/tcltk/ for current information.
If you are using OS X 10.9 or later and a Python from a python.org 64-bit/32-bit installer, application windows may not update properly due to a Tk problem. Install the latest ActiveTcl 8.5.18.0 if possible.
发现是要下载8.5版本,而不是更新的8.6版本才可以。搞定。
Question
- 程序有中文需要declare
Solution
添加 # -*- coding: utf-8 -*-
Question
- 想要能保存多条日记
Solution
用while loop和break
代码
# -*- coding: utf-8 -*-
import time
# ----问候----
print('哥哥,我是你的日记。')
print('你今天有什么想和我分享的吗?')
print('你也可以按"回车键"来阅读我。')
diary = raw_input('>>')
# ----输入回车键,阅读日记----
if diary == '':
diaryFile = open('diary.txt')
diary = diaryFile.read()
print('============日记============')
print(diary)
# ----输入文字,开始写日记啦 ----
else:
diaryFile = open('diary.txt','a')
write='y'
while write=='y':
diaryFile.write('\n' + time.strftime('%Y/%m/%d')+ ' ' +diary)
# ----还想继续写日记----
print('已经帮你记下来啦。你还有想和我说的话吗?(y/n)')
write=raw_input()
# ----不想写啦----
if write !='y':
break
diary = raw_input('>>')
#----说再见----
print('谢谢你和我分享这些。')
print('再见。我会想你的。')
diaryFile.close()
Question
- 可不可以不通过命令行,而是双击直接运行呢
开心的反馈
把这个小小程序给哥哥用,哥哥不停的笑,写下了一行日记
2015/10/21 今天很开心,亲爱的老婆为我设计了个程序
喵,我也觉得很开心呢。心里超甜蜜!
顿时觉得一起分享才是更开心。
当他更明白我学编程是在做什么,也感受到我做的时候也会想到他,这样的感觉其实更好呀。
喵,不过哥哥平时也不写日记滴。
偶问了哥哥,他最想要打游戏可以自动练级的程序。
我现在倒是没有这水平啦,不过我觉得这种可以automate的是事情倒是很值得交给programming去干。
喵,继续学习,继续创造一些更有爱的东西啦。