冲刺豆瓣(15):python 经典练习题3
1、要求输出国际象棋棋盘思路:声明一点,自己不会玩国际象棋,也不知道棋盘到底是什么样的,那么就先从棋盘研究开始。
可以看出,黑白相见。如果要实现这种效果,可以从行数的奇偶进行循环判断输出。如果行数是偶数,那么输出白色,然后在这一行再循环判断,如果列数是偶数则输出黑色。
但是黑白格是特殊的字符,在这里先用常用的字符替代。
#coding=utf-8
'''
Created on 2013-7-28
Function:
@author: BeginMan
To me:Believe yourself!
'''
white = u'口' #代表白色格子
block = u'回' #代表黑色格子
for obj in range(1,10):
if obj % 2 == 0: #偶数行 输出白色
print white,
for i in range(1,10): #循环遍历该行
if i % 2 == 0: #偶数列 输出白色,否则输出黑色
print white,
else:
print block,
print ''
else: #奇数行 输出黑色
print block,
for i in range(1,10): #循环遍历该行
if i % 2 == 0: #奇数列 输出黑色,否则输出白色
print block,
else:
print white,
print ''
则输出如下:
2、打印楼梯,同时在楼梯上方打印两个笑脸
这里同上,要用到ASCII码扩展表,扩展表如下:
http://wenku.baidu.com/view/3a43dc85ec3a87c24028c44a.html
程序如下:
import sys
sys.stdout.write(chr(1))
sys.stdout.write(chr(1))
print ''
for i in range(1,11):
for j in range(1,i):
sys.stdout.write(chr(219))
sys.stdout.write(chr(219))
print ''
结果并没有很好的显示出来,这个不知道如何解决,百度了一下,下面解释如下:
你只能标准的Ascii码000~127序号的,其他的因为不是标准码必须输出前调整你的控制台窗口的默认代码页,把简体中文改成美国标准(这样,程序就不能同时输出中文了)。。。
3、古典问题:有一对兔子,从出生后第三个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,如果兔子都不死,问每个月的兔子总数为多少?
思路:分析每个月的兔子:
第一个月-----------------1
第二个月-----------------1
第三个月-----------------2
第四个月-----------------3
第五个月-----------------5
第六个月-----------------8
第七个月-----------------13
... ...
从中发现,从第三个月开始,前两个月兔子数之后为第三个兔子总数,所以定义一个存放24个月兔子书数组,每个元素存放一个月的兔子总数
参考:http://blog.iyunv.com/duxinfeng2010/article/details/7770354
4、判断101-200之间有多少个素数,并输出所有素数。
h = 0
leap = 1
from math import sqrt
from sys import stdout
for m in range(101,201):
k = int(sqrt(m + 1))
for i in range(2,k + 1):
if m % i == 0:
leap = 0
break
if leap == 1:
print '%-4d' % m
h += 1
if h % 10 == 0:
print ''
leap = 1
print 'The total is %d' % h
输出:
#101103107109113127131137139149
#151157163167173179181191193197
#199The total is 21
自己又研究了一种方法,觉得更加简单,如下:
"""求10内的素数(质数)"""
lis = [] #装非素数的容器
for obj in range(1,10):
if obj>2:
for x in range(2,obj):
if obj % x == 0:
lis.append(obj)
lis = list(set(lis)) #去重
sushu = #去包含
print sushu #
页:
[1]