异度部落格

学习是一种生活态度。

0%

晚上无聊看了点 C#,随便写了个 Hello World 做纪念

1
2
3
4
5
6
7
8
9
10
11
12
13
using System;
namespace MyNamespace
{
class MyClass
{
static void Main()
{
Console.WriteLine("Hello World");
Console.ReadLine();
return ;
}
}
}

保存为 helloworld.cs,然后再 cmd 里面执行

1
csc helloworld.cs

会在源文件的目录下面生成一个 helloworld.exe 的可执行程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/env python
#-*- coding:utf-8 -*-
#6–2. 字符串标识符.修改例6-1 的idcheck.py 脚本,使之可以检测长度为一的标识符,并且
#可以识别Python 关键字,对后一个要求,你可以使用keyword 模块(特别是keyword.kelist)来帮你.
import string
import keyword
alphas = string.letters
nums = string.digits
print 'The Identifier Checker'
myString = raw_input('Input the identifier to check:')
if myString in keyword.kwlist :
print 'Invalid: It is a keyword.'
else:
if myString[0] not in alphas + '_' :
print 'Invalid: First symbol must be alphabetic or underline.'
else:
for c in myString[1:] :
if c not in alphas + nums :
print 'Invalid: Symbols must be alphabetic or numbers.'
print 'The identifier is ok.'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/env python
#-*- coding:utf-8 -*-
#6–3. 排序
#(a) 输入一串数字,从大到小排列之.
#(b) 跟a 一样,不过要用字典序从大到小排列之.
#(a)
list1 = []
while True:
n = int(raw_input('输入一些数字以0结束:'))
if n == 0:
break
list1.append(n)
list1.sort()
print list1
#(b)
list2 = []
while True:
n = raw_input('输入一些数字以0结束:')
if n == '0':
break
list2.append(n)
list2.sort()
print list2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#6–6. 字符串.创建一个string.strip()的替代函数:接受一个字符串,去掉它前面和后面的空格
str = raw_input('Input a string your want to operate:')
i = 0
j = len(str) - 1
while str[i] == ' ' :
i += 1

while str[j] == ' ' :
j -= 1

str = str[i:j+1]
print str
1
2
3
4
5
6
7
8
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#6–9. 转换.为练习5-13 写一个姊妹函数, 接受分钟数, 返回小时数和分钟数. 总时间不
#变,并且要求小时数尽可能大.
n = int(raw_input('输入分钟数:'))
hour = n / 60
min = n % 60
print '%d : %d' % (hour, min)
1
2
3
4
5
6
7
8
9
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#6–10.字符串.写一个函数,返回一个跟输入字符串相似的字符串,要求字符串的大小写反转.
#比如,输入"Mr.Ed",应该返回"mR.eD"作为输出.
def mySwapcase(myString) :
return myString.swapcase()

str = raw_input('Input a string your want to operate:')
print mySwapcase(str)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#6–12.字符串
#(a)创建一个名字为findchr()的函数,函数声明如下:def findchr(string, char)
#findchr()要在字符串string 中查找字符char,找到就返回该值的索引,否则返回-1.不能用
#string.*find()或者string.*index()函数和方法
#(b)创建另一个叫rfindchr()的函数,查找字符char 最后一次出现的位置.它跟findchr()工作
#类似,不过它是从字符串的最后开始向前查找的.
#(c)创建第三个函数,名字叫subchr(),声明如下:def subchr(string, origchar, newchar)
#subchr()跟findchr()类似,不同的是,如果找到匹配的字符就用新的字符替换原先字符.返回
#修改后的字符串.
def findchr(string, char) :
i = 0;
while i < len(string) :
if string[i] == char :
return i
i += 1
return -1

def rfindchr(string, char) :
i = len(string) - 1
while i >= 0 :
if string[i] == char :
return i
i -= 1
return -1

def subchr(myString, origchar, newchar) :
'将string中的origchar字符替换成newchar字符'
import string
string.replace(myString,origchar,newchar)

#Test
myString = 'abcdefcg'
print findchr(myString, 'c')
print findchr(myString, 'c')
subchr(myString, 'c', 'X')
print myString

ibus 是一个很强大的输入,现在主要用于手机和 Linux 平台上。

下面是 ibus 日语输入法 ibus-anthy 的安装方法

1
sudo apt-get install ibus-anthy

然后在 ibus 的首选项里面添加日语->anthy 即可

本人一直感觉天书棋谈这个游戏很2,感觉电脑很是弱智。今天把一个增强库装了以后,一把都没赢过...悲剧了 增强库安装方法如下:

1
sudo apt-get install libeval0-dev 

下面的代码是这两天看 Python 核心编程的时候做的部分课后练习

1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#5-2 运算符
#(a) 写一个函数,计算并返回两个数的乘积
#(b) 写一段代码调用这个函数,并显示它的结果
def mult(x,y) :
'返回两个数x和y的乘积'
return int(x) * int(y) #这里int()函数还是要的
a = raw_input('输入数a:')
b = raw_input('输入数b:')
print 'a * b = ', mult(a,b)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/env python
#-*- coding: utf-8 -*-
#5-3 标准类型运算符. 写一段脚本,输入一个测验成绩,根据下面的标准,输出他的评分成绩(A-F)。
#A: 90–100 B: 80–89 C: 70–79 D: 60 F: <60
while True :
score = raw_input('输入分数:')
score = int(score) #将score类型由string转换为int
if score > 100 or score < 0 :
print '输入分数无效,程序退出'
break
elif score >= 90 :
print '%d is rank A' % score
elif score >= 80 :
print '%d is rank B' % score
elif score >= 70 :
print '%d is rank C' % score
elif score >= 60:
print '%d is rank D' % score
else :
print '%d is rank F' % score
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/env python
#-*- coding: utf-8 -*-
#5-4 取余。判断给定年份是否是闰年。使用下面的公式:
#一个闰年就是指它可以被4 整除,但不能被100 整除, 或者它既可以被4 又可以被100 整
#除。比如 1992,1996 和2000 年是闰年,但1967 和1900 则不是闰年。下一个是闰年的整世
#纪是 2400 年。
def isLeap(year) :
year = int(year)
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0 :
return True
else :
return False

year = raw_input('输入一个年份:')
if (isLeap(year)) :
print year, '是闰年'
else :
print year, '不是闰年'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/usr/bin/env python
#-*- coding:utf-8 -*-
#5-5 取余。取一个任意小于1 美元的金额,然后计算可以换成最少多少枚硬币。硬币有1
#美分,5 美分,10 美分,25 美分四种。1 美元等于100 美分。举例来说,0.76 美元换算结果
#应该是 3 枚25 美分,1 枚1 美分。类似76 枚1 美分,2 枚25 美分+2 枚10 美分+1 枚5 美分+1
#枚1 美分这样的结果都是不符合要求的。
money = raw_input('输入任意小于1 美元的金额:')
print money,'美元换算结果'
money = float(money)
money *= 100
money = int(money)
cent25 = money / 25
money %= 25
cent10 = money / 10
money %= 10
cent5 = money / 5
money %= 5
cent1 = money
if cent25 :
print '25美分*',cent25
if cent10 :
print '10美分*',cent10
if cent5 :
print '5美分*',cent5
if cent1 :
print '1美分*',cent1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/usr/bin/env python
#-*- coding:utf-8 -*-
#5-6 算术。写一个计算器程序 你的代码可以接受这样的表达式,两个操作数加一个运算符:
#N1 运算符 N2. 其中 N1 和 N2 为整数或浮点数,运算符可以是+, -, *, /, %, ** 分别表示
#加法,减法, 乘法, 整数除,取余和幂运算。计算这个表达式的结果,然后显示出来。提示:
#可以使用字符串方法 split(),但不可以使用内建函数 eval().
def operator(str) :
if str.find('+') >= 0:
return '+'
elif str.find('-') >= 0:
return '-'
elif str.find('*') >= 0:
return '*'
elif str.find('/') >= 0:
return '/'
elif str.find('%') >= 0:
return '%'
else :
return '**'
calStr = raw_input('输入计算表达式,如a+b形式:')
op = operator(calStr)
num = calStr.split(op)
print num
res = 0.0
if op == '+':
res = float(num[0]) + float(num[1])
elif op == '-':
res = float(num[0]) - float(num[1])
elif op == '*':
res = float(num[0]) * float(num[1])
elif op == '/':
res = float(num[0]) / float(num[1])
elif op == '%':
res = int(num[0]) % int(num[1])
elif op == '**':
res = float(num[0]) ** float(num[1])
print 'result is %f' % str(res)
1
2
3
4
5
6
7
#!/usr/bin/env python
#-*- coding:utf-8 -*-
#5-10 转换。写一对函数来进行华氏度到摄氏度的转换。转换公式为C = (F - 32) * (5 / 9)
#应该在这个练习中使用真正的除法, 否则你会得到不正确的结果。
F = float(raw_input('输入温度:'))
C = (F-32)*(5/9.0)
print '华氏度到摄氏度的转换后,结果为:',C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/usr/bin/env python
#-*- coding:utf-8 -*-
#5-11 取余。
#(a) 使用循环和算术运算,求出 0-20 之间的所有偶数
#(b) 同上,不过这次输出所有的奇数
#(c) 综合 (a) 和 (b), 请问辨别奇数和偶数的最简单的方法是什么?
#(d) 使用(c)的成果,写一个函数,检测一个整数能否被另一个整数整除。 先要求用户输
#入两个数,然后你的函数判断两者是否有整除关系,根据判断结果分别返回 True 和 False;
#(a)
print '0-20 之间的所有偶数:'
i = 0
while i <= 20 :
if (i % 2 == 0) :
print i,' '
i += 1
print
#(b)
print '0-20 之间的所有奇数:'
i = 0
while i <= 20 :
if (i % 2 == 1) :
print i,' '
i += 1
print
#(d)
a = int(raw_input('输入整数a:'))
b = int(raw_input('输入整数b:'))
if (a % b == 0):
print 'a能被b整除'
else:
print 'a不能b整除'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/env python
#-*- coding:utf-8 -*-
#5–15. 最大公约数和最小公倍数。请计算两个整数的最大公约数和最小公倍数。
def GCD(a, b):
'求a和b的最大公约数'
if b == 0 :
return a
else :
return GCD(b, a % b)
def LCM(a, b):
'求a和b的最小公倍数'
if (a * b == 0):
return 0
else :
return a * b / GCD(a,b)

x = int(raw_input('输入x:'))
y = int(raw_input('输入y:'))
print 'GCD:',GCD(x, y)
print 'LCM:',LCM(x, y)

多个signals连接一个slot的时候,可以使用QObject::sender()函数进行读取所产生的对象,之后只要加一个强制类型转换就ok了

实例如下:

连接部分:

1
2
connect(ui->button0, SIGNAL(clicked()), this, SLOT(append()));
connect(ui->button1, SIGNAL(clicked()), this, SLOT(append()));

slot实现部份:

1
2
QObject *object = QObject::sender();
QPushButton *sender = qobject_cast<QPushButton *>(object);

int()是 Python 的一个内部函数

Python 系统帮助里面是这么说的

1
2
3
4
5
6
7
8
9
10
11
12
>>> help(int)
Help on class int in module __builtin__:
class int(object)
| int(x[, base]) -> integer
|
| Convert a string or number to an integer, if possible. A floating point
| argument will be truncated towards zero (this does not include a string
| representation of a floating point number!) When converting a string, use
| the optional base. It is an error to supply a base when converting a
| non-string. If base is zero, the proper base is guessed based on the
| string content. If the argument is outside the integer range a
| long object will be returned instead.
1
2
>>> int(12.0)
12

int()函数可以将一个数转化为整数

1
2
>>> int('12',16)
18

这里有两个地方要注意:1)12 要以字符串的形式进行输入,如果是带参数 base 的话

2)这里并不是将 12 转换为 16 进制的数,而是说 12 就是一个 16 进制的数,int()函数将其用十进制数表示,如下

1
2
3
4
>>> int('0xa',16)
10
>>> int('10',8)
8

今天写的这个文本文件合并,基本上是把昨天写的那个两个脚本合并起来了,详见代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'mergeTextFile--用于合并两个文本文件'
import os
#输入两个文件名
while True:
file1 = raw_input('输入要合并的第一个文件名:')
if not os.path.exists(file1):
print '文件不存在'
continue
else :
break

while True:
file2 = raw_input('输入要合并的第二个文件名:')
if not os.path.exists(file2):
print '文件不存在'
continue
else :
break
#打开两个文件
contents = []
try :
fobj = open(file1, 'r')
except IOError, error :
print ' %s 打开失败:%s' % (file1,error)
else :
for eachline in fobj :
print eachline
contents.append(eachline)
fobj.close()
try :
fobj = open(file2, 'r')
except IOError, error :
print ' %s 打开失败:%s' % (file2,error)
else :
for eachline in fobj :
print eachline
contents.append(eachline)
fobj.close()
#创建合并文件
while True:
merge = raw_input('输入要合并后新文件名:')
if os.path.exists(merge):
print '文件已存在'
continue
else :
break
fobj = open(merge, 'w')
fobj.writelines(['%s%s' % (eachline, os.linesep) for eachline in contents])
fobj.close()

这个程序主要可以实现创建一个文本文件 makeTextFile.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'makeTextFile.py--创建一个文本文件'
import os
#输入文件名
while True :
filename = raw_input('输入文件名')
if os.path.exists(filename) :
print 'ERROR: %s already exists' % filename
else :
break

#输入文件内容
contents = []
print '/n输入每行文本,以#结束'
while True :
entry = raw_input('> ')
if entry == '.' :
break
else :
contents.append(entry)

#写入文件
fobj = open(filename, 'w')
fobj.writelines(['%s%s' % (eachline, os.linesep) for eachline in contents])
fobj.close()
print 'Done!'

这个用来显示 readTextFile.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'readTextFile.py--读取显示文本文件'
#获取文件名
filename = raw_input('输入文件名:')
#打开文件
try :
fobj = open(filename, 'r')
except IOError, error:
print ' %s 打开失败:%s' % (filename,error)
exit()
else :
#显示文本
for eachline in fobj :
print eachline
#文件关闭
fobj.close()