python的逻辑应用
python的逻辑语言一般分为条件语句、逻辑语句,常用的是if判断语句;while、for逻辑循环语句;嵌套判断、循环语句。
1.使用python语句编写99乘法口诀。
要实现为下图:
查看规律,发现:
1.每行都有一个数字相同;
2.另外一个数字递增;
3.当数字相同是换行。
数字递增的话刚好使用for语句加上range函数即可实现,同一个数字下的数字叠加积可以使用for的嵌套实现,加上判断换行时间即可实现乘法口诀语句
for i in range(1, 10): for j in range(1, i+1): if i != j: print("{0}*{1}={2}".format(j, i, i * j), end="\t") else: print("{0}*{1}={2}".format(j, i, i * j))
运行结果如下
2.判断一行字符,分别统计其中英文字母、空格、数字、其他的个数。
要统计字符的个数有以下需要做到的:
1.对每个字符进行单独的判断;
2.根据判断来统计字符的数量。
要想对字符实现单独判断直接使用for将所有字符单独提取出来,然后使用字符的isspace()、isdigit()、isalpha()等判断字符的数量。
3.实现ABCD * 9 = DCBA。
实现这个我们就是简单是使用for语句将所有的情况计算出来,加入if判断符合是数字即可。
但是这样的话程序运行的效率就没有保证。
通过查看ABCD * 9 = DCBA我们可以发现以下规律:
1.数字ABCD*9得出的还是4位数,那么A的值不可能大于2,也不可能等于0,那么A等于1;
2.A等于1的话那么D可以计算出结果为9;
根据上面的方法我们改良即可的得出以下:
计算结果虽然一样,但是这样计算的次数将减少9*9次,大大的增加了效率。
4.实现9宫格的计算
------------- | A | B | C | ------------- | D | E | F | ------------- | G | H | I | -------------
要求有:
1.横竖斜的和都为15;
2.数字不能一样;
3.数字范围为1-9。
要完成这个程序需要要的是:
1.所有都是1-9之间的数字,其中一个提取了,那么其他的就不能在提取;
2.横竖斜的和都是15。
那要实现就是将1-9的数字嵌套循环,没去一个数字就剔除,可以先建立一个列表1-9的做for循环,每取得一个数值就将列表的数字剔除,剩下的列表做下一次循环,知道最后一次循环,加入判断横竖斜和都是15的数字即可实现,这个要是使用list生成,list的copy()函数、remove()函数,加上if、for的嵌套循环即可,实现的程序如下:
number = list() for i in range(1, 10): number.append(i) count = 1 for A in number: a = number.copy() a.remove(A) for B in a: b = a.copy() b.remove(B) for C in b: c = b.copy() c.remove(C) for D in c: d = c.copy() d.remove(D) for E in d: e = d.copy() e.remove(E) for F in e: f = e.copy() f.remove(F) for G in f: g = f.copy() g.remove(G) for H in g: h = g.copy() h.remove(H) for I in h: if ( A + B + C ) == ( A + D + G ) == ( D + E + F ) == ( G + H +I ) == ( C + F + I ) == ( B + E + H ) \ == ( C + F + I ) == ( A + E + I ) == ( G + E + C ): print("""count is {9} ------------- | {0} | {1} | {2} | ------------- | {3} | {4} | {5} | ------------- | {6} | {7} | {8} | ------------- """.format(A, B, C, D, E, F, G, H, I, count)) count += 1
运行结果有8个满足,
也可以使用列表生成来实现程序:
number = [i for i in range(1,10)] count1 = 1 for A in range(1,10): for B in [i for i in number if i != A]: for C in [i for i in number if i != A and i != B]: for D in [i for i in number if i != A and i != B and i != C]: for E in [ i for i in number if i != A and i != B and i != C and i != D ]: for F in [ i for i in number if i != A and i != B and i != C and i != D and i != E]: for G in [i for i in number if i != A and i != B and i != C and i != D and i != E and i != F]: for H in [ i for i in number if i != A and i != B and i != C and i != D and i != E and i != F and i != G ]: for I in [ i for i in number if i != A and i != B and i != C and i != D and i != E and i != F and i != G and i != H]: if (A + B + C) == (A + D + G) == (D + E + F) == (G + H + I) == (C + F + I) == ( B + E + H) \ == (C + F + I) == (A + E + I) == (G + E + C): print("""count is {9} ------------- | {0} | {1} | {2} | ------------- | {3} | {4} | {5} | ------------- | {6} | {7} | {8} | ------------- """.format(A, B, C, D, E, F, G, H, I, count1)) count1 += 1
得出的结果完全一样,效率也有所提高。
5.python的字符编码。
python下常使用的字符编码有:ASCII码、GBK、Unicode、UTF-8
1).为了处理英文字符,产生了ASCII码。
2).为了处理中文字符,产生了GBK。
3).为了处理各国字符,产生了Unicode。
4).为了提高Unicode存储和传输性能,产生了UTF-8,它是Unicode的一种实现形式。
python程序在不同的环境下打印中文字符等的时候容易出现乱码,原因的是字符编码的问题,
正常我们会在程序的开头声明我们要编码的格式,
如果出现乱码直接更改编码格式即可,也可以使用decode解码、encode编码来解决
python转码的过程:
源有编码 -> unicode编码 -> 目的编码
编码错误的话
更改编码即可。