分类目录归档:计算机与编程

我的第一个GUI程序

100Words

每天一篇英语日记

这是一个英语日记写作程序,可以作为英语学习辅助使用。假如你正在学习英语,每天都有一定量的输入,比如说阅读或是听播客,那么你可以使用它来进行复习和回顾。每天一百个单词也许很少,但是通过长久的积累,同时搭配语法的学习和大量语料的输入,写作水平就会得到指数级的提高。

100Words v1,1

100Words v1,1

功能说明

1.自动创建 ‘C:UsersAdministratorMyDiary年月’ 目录树及文件。
2.以日为文件名创建txt文件,txt文件开头写入日期与时间。
3.每篇日记要求字数100。
4.查看以往日记点击File-Reflect。
5.查看以往日记不支持再编辑,点击保存会添加到当天内容。
6.数据统计。

使用说明

1.点击这儿下载文件。
2.双击安装字体文件(Purisa.ttf)。
3.然后就可以打开程序(100 Words.exe)了。

Rules

Rule 1: You must write no less than 100 words. Rule 2: You can only use one emoji in one day. Rule 3: You can not change the previous diary.

打包说明

1.根目录下的exe文件是用pyinstaller打包。
2.Diary.spec为打包后生成的配置文件。
3.代码中的音频调用使用了一个resource_path(relative_path)函数,在调用文件的地方使用这个函数包裹。 然后在.spec文件中指向具体的文件地址,打包后即可正常调用。 4.详情见注释。

待实现功能

1.图形界面;————√
2.拼写检查;
3.年底自动总结完成情况,包括每月完成量,生成折线图;
4.添加表情;
5.activity calendar。
6.图标问题。
7.反馈。————√

Python打包总结(pyinstaller)

 

在学《Leanrn Python the Hard Way》时做了一个文字游戏,想要分享给朋友玩。于是便想把程序打包成 .exe 文件,尝试了py2exe,出了很多问题,花了很多时间查来查去最后还是没有成功。然后试了pyinstaller,虽然也遇到了一些问题,但终于完成了。

(英文好的建议直接去看官方文档

 

、安装及基本操作

 

Pyinstaller可以使用pip安装,在命令行下输入下面这行就可以了。

 

pip install pyinstaller

 

如果下载安装包,那么要注意下载相应的win32/64版本,建议所有的程序都统一成32位或是64位版本,这样会减少很多问题。

 

安装完毕之后,就可以通过以下命令打包了

先转到主脚本所在的地址,例如:

 

cd C:UsersAdministratorprojectstomato

 

然后执行如下命令:

pyinstaller start.py -F

 

其中start.py为主脚本,主脚本中调用的模块文件会被自动打包。第三个参数是操作命令,常用的命令有

-F 打包成单个文件
-D 打包成单个文件夹形式
 
-c 控制台模式,执行程序会跳出控制台,
-w 窗口模式,不会跳出控制台 

 

基础的命令就这些,程序名和图标等建议在spec文件中设置。

 

二、文件调用(音频,图片等)

 

一开始打包时便不清楚文件调用问题,因此文件一旦移动到别处就没法正常调用。后来看到别人的教程,但这部分也是模棱两可,让人理解不了。后来结合官方文档和别人的教程,终于弄清楚了。

 

首先在脚本定义一个读取相对路径的函数:

Import os
Import sys 

def resource_path(relative_path):
    """
    定义一个读取相对路径的函数
   """
    if hasattr(sys, "_MEIPASS"):
       base_path = sys._MEIPASS
    else:
       base_path = os.path.abspath(".")
    return os.path.join(base_path, relative_path)

 

然后在需要调用文件的地方用如下格式包裹:

resource_path('resources/complete.wav')

 

然后在生成的.spec文件exe = EXE()中加入下面这行:

[('resources/complete.wav',r'C:UsersAdministratorresourcescomplete.wav','music'),],

 

元组内的三个项:

第一个为代码中resource_path包裹的地址;

第二个是文件的实际地址;

第三个是打包进程序的文件名字。

 

这样打包后文件会被正确引用。

如下所示:

exe = EXE(pyz,
      a.scripts,
      a.binaries,
      a.zipfiles,
         a.datas,               
         [('resources/complete.wav',r'C:UsersAdministratorprojectsDiaryresourcescomplete.wav','music'),],
      name='Diary',  # 这里可以设置可执行文件的名字
      icon='diary.ico',# 设置图标
      debug=False,
      strip=None,
      upx=True,
      console=True ) # 是否开启控制台模式

注意加地址前的r以及行尾的逗号,更新过spec文件后,再重新打包只需要执行pyinstaller start.spec 就可以了。

 

三、添加图标

 

图标的设置有两种方式,一种是在执行打包命令时加入下面这句:

--icon=xxx.ico

 

第二种(推荐)是用文本编辑器或记事本打开执行打包后文件夹内新生成的xxx.spec文件,然后在exe =()中加入一行:

icon = ’xxx.ico‘

(见上面的代码第八行)

xxx.ico 为你要设置的图标文件,其他格式需要转换成ico格式,可在这里在线转换。

(图标文件要放在程序根目录下)

 

四、其他

 

  1. 64windows上打包的程序不能在32位上运行,反之却可以。
  2. 每次更改完代码或是spec文件,只需要再重新执行一下pyinsyaller start.spec -F就可以了

 

五、替代品

 

如果pyinstaller没有解决你的问题,那么你可以尝试一下下面这两个替代品:

py2exe

cx_Freeze

 

新手写给更新的新手的编程入门建议(Python)

引文

我是从去年开始学习编程(Python)的,到现在仍然还在入门阶段。之所以我的入门阶段如此之长,我想大概有以下几个原因:

一、没有选对教材

一开始我看了《Python简明教程》,书中大部分概念都很简单,只能算是有了一个基本的了解。然后做了某个网络在线教程,一味的强调语法规则,反觉枯燥乏味,像是做填空题。再后来,看了Udacity上的教程,发现Python原来能做这么多有趣的事情,这才有了更大的兴趣。但Udacity上的课程仅仅是几个小项目,适合刚开始学习时培养兴趣。然后,我有发现了《Learn Python The Hard Way》,觉得这才是初学者应该接触的东西。作者不仅强调了很多重要的概念,还指出了很多新手易掉入的误区,比如不该纠结于操作系统和文本编辑器等。

二、听从其他人的建议

当然不是说不能听从他人的建议,我的意思是不要听从太多的建议。大部分权威的建议肯定是有价值的,但新手得去分辨他的建议是不是适合新手,假如我早一些看到知乎上萧井陌的这篇编程入门指南的话,那么我将少走很多弯路。而我的经历是这样的,当我纠结于操作系统时,便去找关于操作系统的建议,然后掉进了Linux的大坑,从虚拟机、Linux版本、命令行、软件配置……这其中每一项都花费了大把的时间。接着我又开始纠结编辑器,又去找建议了,试了各种各样的编辑器,每一个都有或多或少各种各样的问题。每一个工具的支持者都列出各种各样的优点了。但你却不知道自己适合哪一个,最后只能是试来试去浪费时间。

三、投入的时间太少

这个是我自身的问题,但如果非要找些借口也能找得到,比如说当初没脑子选错专业,有女朋友……但最近情况好了许多,我已经彻底放弃专业课的学习,每天只专注三件事:阅读,英语,编程。

我的建议

下面以我过去一年的经验,给比我还新的新手一些建议(仅适用于入门阶段):

一、为什么学编程?

开始学编程之前,要问自己这个问题。没有目标的学习算什么?修身养性,锻炼智力?不管是想要开发程序,做网站,或是找工作挣钱。总之要有一个目标。这是你坚持下去的前提。

二、操作系统

不要一开始就换Linux,作为编程新手,Windows已经足够了。

三、编辑器

用Notepad++。不要问为什么。

  1. 制表符Tab设置转换为空格。
  2. 运行快捷键设为F5。
  3. 语言样式依喜好来。
  4. 其他设置默认,学习一段时间后根据需求再去改设置。
  5. 再知道自己需要什么样的功能之前,不要换工具。
  6. 学完基础内容后可以试用一些PyCharm。

四、教程

看看专家们怎么说,不要看太多的建议。比如萧井陌的那篇入门指南就很好。知乎上技术类的问答可以只看高票答案。

五、如何坚持?

定期回顾自己的目标是否现实,自己是否有能力实现。觉得不能的话立刻放弃,不要浪费时间。心智不成熟的人多去看看书(当然看烂书没用),等长大了再来谈坚持。对于心智健全的人,我的建议是:

  1. 抛弃娱乐式学习。
  2. 做自己感兴趣的小项目。
  3. 使用纸笔做任务管理。
  4. 远离媒体和社交网站。
  5. 简化生活方式和人际关系。
  6. 一周只留半天休息娱乐。

六、其他

用写博客或记笔记(推荐OneNote)的方式记录经验和总结。牛犊应该安心吃草长大。慢慢来,不要急。

用模拟器玩Wii游戏

 

rp_9b31511c8706fcdbbcc2b4d0158dd590.jpg

  • 前言
    • 本文介绍如何用最简单(经济)的方法玩wii游戏。当然啦,如果钱足,或是有台大电视,那么直接去买一台wii会得到更多快乐,而且可以免去倒腾模拟器的麻烦。若两缺如我,那就没得选了。
    • 拉扎罗把玩游戏得到的趣味元素分为四种:简单趣味(Easy fun)、困难趣味(Hard fun)、社交趣味(People fun)、严肃趣味(Serious fun)。其中社交趣味,也就是与朋友或亲人一起游戏所得到的情绪要丰富得多。与他人一起游戏会把合作、竞争、沟通和领导等等结合在一起,这也正是wii游戏吸引我的地方。
    • 我在尝试了许多游戏后也发现,两个人一起玩游戏,更快乐。
    •  当然,以下情况例外:
      • 竞争类游戏,比如格斗类,适合水平相近者,否则两边都不愉快。
      • 某一方过于笨拙,以至于通过学习也无法达到正常操作游戏的水平。
      • 某一方过于聪明,以至于只能靠故意输给对方才能维持对方的快乐。

 

  •  准备材料

 

  • 设置
    • 基础工作(你需要自己完成的)
      • 下载相应版本的模拟器,安装备用。
      • 到上面的网盘里搜索并下载下面的几个游戏,解压,把游戏文件集中到一个文件夹备用。
      • 买一对手柄。
      • 交个愿意和你玩游戏的女朋友或男朋友。
    • 其他设置
      • 点击浏览选择之前存放游戏的文件夹,游戏将以列表的形式显示在主界面。
      • 点击图形
        • 勾选use fullscreen(自动全屏)
        • 勾选隐藏鼠标光标
        • 增强标签页中的抗锯齿等选项可自行决定调节。一般游戏速度与画质成反比,具体视电脑硬件而定。
      • 点击wiimote
        • 把wiimote1、2选为模拟wiimote。
        • 点击设置
        • 上方是设备的标签页
        • 标签页下面是设备选择框,选择另一个设备后刷新。
        • 因为不同的游戏需要不同的键位设置,所以在这里介绍一下各个键位及游戏中的功能。
          • 左边的AB12是常用键,设为手柄右边的四个键即可。(点击界面上的按键,然后按下手柄上要设置的键位。)
          • +-一般作为跳过游戏过场动画和游戏菜单键(暂停、保存进度等),设在手柄中间位置的小按键。
          • home是wii系统的暂停界面(相当于操作系统)。
          • 红外线一般用不到,如果用键盘鼠标可以设为鼠标滑动。有些游戏需要用红外线精确点击就不容易操作。
          • swing未知
          • tilt在游戏中用于倾斜,比如滑轮平台向左右的偏转。可设为手柄上方的两个键。
          • 震动代表着wii控制器的晃动,可以把三个值设为同一个键。
          • D-pad设为十字键。
          • 勾选右下角三个选项
          • 扩展
            • 有些游戏需要左手控制器,如马里奥赛车,需要勾选nunchuk。
            • ZC是主要按键,设为上方按键。
            • 设置摇杆为十字键。
            • 其他似乎没用?
          • 建议把每一种游戏所需的键位设置保存配置。输入名字后点击保存即可。使用时选好配置,点击载入。但需要注意的是,同时保存的还有选择的设备。所以每一个设备要保存一个独立的配置文件。

 

  • 推荐游戏及相应设置
    • 马里奥赛车
      • 支持一到四个人
      • 需要在扩展中选择nunchuk
      • zc键在游戏中用来用道具以及向后看。设为手柄上方的两个键。
      • AB为加速和减速。
      • 震动在游戏中用于在空中做动作(有加速奖励),设为上方某个键。(需要在升空之前按住不放。)
      • 把摇杆设为十字键。
      • 由于键位的原因,在游戏选人物赛车等按下手柄上下方向键将会是左右的效果,进入游戏后正常。
    • 炸弹人
      • 建议下载最简单的版本,不要下载炸弹人大陆。
      • 我没找到汉化版,所以只说一下我知道的部分。
      • 可以和马里奥赛车用同一个键位配置。
      • 游戏有三个模式:战斗模式,故事模式,新手模式
      • 进入战斗模式后设定玩家,1-4p是player,5-8p是cpu。左右选择模式,当选到两个日文字母是为取消的意思。我们只需要选择好要关闭的玩家,其他默认。
      • 然后是选具体的游戏模式以及地图。1返回,2确定。
    • 新超级马里奥兄弟
      • 最多支持四人。
      • 无需扩展。
      • 需要设置的键位有:
        • d-pad的十字键。
        • tilt的左右设为上方按键。
        • 1,2,a,b设为右边四个键。1用做使用道具,按住为奔跑;2为跳,按住跳得更高,在墙壁等地方可以(跳+朝向墙壁的方向键)可以蹬墙跳;A产生气泡保护,在掉下坑前可以使用,但所有玩家同时使用的话就完蛋了。气泡状态下按震动键去碰其他玩家可以快速出来。
        • 震动xyz设为手柄上方右上角按键,用于旋转,飞行,与1配合抓取物品。
    • 星之卡比
      • 键位设置同新超级马里奥兄弟。
      • 键位功能也与新超马差不多,游戏开始有入门教程。
    • 马里奥聚会9
      • 按键配置同马里奥赛车。
      • 适合四个人玩,三个手柄,外加鼠标键盘。
      • 鼠标键盘设置为玩家1,用来选择游戏,做主要的操作。其他玩家在选择人物时会有些不方便,多尝试一下。
      • 因为控制器的问题,只能选择小游戏中的自由模式,大部分的游戏都能玩。
      • 推荐游戏:飞吧,三段火箭;数数栗宝宝;躲猫猫;敲砖快手;数字攀岩。

 

  • 其他双人/多人游戏推荐
    • 雷曼·传奇(pc)
      • 类似有马里奥的横版过关游戏。
      • 风格搞笑,内容丰富。
    • King of opera(ios)
      • 算是聚会游戏吧。
      • 操作简单,容易上手。
      • 四个人玩最有意思。个人觉得经典模式最好玩。

FizzBuzz问题

之前在Medium上看到一篇文章,作者提到了FizzBuzz的问题,问题是这样的:

在1到100的数字中,能被3整除的变为“Fizz”,能被5整除的变为“Buzz”,既能被3整除又能被5整除的变为“FizzBuzz”,然后打印出这些数。

据他说很多的计算机专业毕业生求职时都没法完成这个简单的问题。于是,我也开始尝试了。两周过去一直没有解决,因为想要自己解决掉,所以也没有去Google答案。一开始纠结于如何替换掉相应的数字,没有找到可以替换数字的方法。然后又不知道如何在不破坏顺序的情况下替换数字。今晚突然有了灵感,解决了问题。

代码如下(python):

numbers = range(1,101)

for i in numbers:
    if i%3==0 and i%5==0:
        print 'FizzBuzz'
    elif i%3==0:
        print 'Fizz'
    elif i%5==0:
        print 'Buzz'
    else:
        print i

如果你也在学习编程,那么也来尝试一下吧!