书上原代码:
=====================================================================================
#!/usr/bin/evn python
#encoding:utf-8
#以正确的宽度在居中得"盒子"内打印一个句子
#注意,整数除法运算(//)只能使用python 2.2以及后续版本,在之前得版本中,只能使用普通除法(/)
sentence = raw_input("Sentence: ")
screen_width = 80
text_width = len(sentence)
box_width = text_width + 6
left_margin = (screen_width - text_width) // 2
print ' ' * left_margin + '+' + '-' * (box_width) + '+'
print ' ' * left_margin + '|' + ' ' * text_width + '|'
print ' ' * left_margin + '|' + sentence + '|'
print ' ' * left_margin + '|' + ' ' * text_width + '|'
print ' ' * left_margin + '+' + '-' * (box_width) + '+'
=====================================================================================
执行结果:
我修改后代码:
=====================================================================================
#!/usr/bin/evn python
#encoding:utf-8
#以正确的宽度在居中得"盒子"内打印一个句子
#注意,整数除法运算(//)只能使用python 2.2以及后续版本,在之前得版本中,只能使用普通除法(/)
sentence = raw_input("Sentence: ")
screen_width = 80
text_width = len(sentence)
box_width = text_width + 6
left_margin = box_width + ((box_width - text_width) // 2)
print ' ' * box_width + '+' + '-' * (box_width) + '+'
print ' ' * left_margin + '|' + ' ' * text_width + '|'
print ' ' * left_margin + '|' + sentence + '|'
print ' ' * left_margin + '|' + ' ' * text_width + '|'
print ' ' * box_width + '+' + '-' * (box_width) + '+'
=====================================================================================
执行结果:
需求:---------------在屏幕中打印一个由字符组成的“盒子”,而这个“盒子”在屏幕上居中而且能够根据用户输入得句子自动调整大小------------
解刨:
(screen_width) ----------------------(box_width)---------------------
-------------- (text_width)--------------
-----------------------------------------------------------
算法:
用户输入要在中间显示得文本,通过len()函数获取文本长度得到text_width,
这里得需求实现就是
box_width = text_width + 6(这里最好是偶数不然不对称,可思考)
screen_width = 预设计宽度,前面占多少空白开始打印“盒子”
问题:
原代码问题出在了计算盒子left_margin错了,所以开始打印得位置都是一样,那么就会看到盒子得左边都是从同一个位置开始打印得不符合需求,所以我重新计算left_margin
left_margin = box_width + (box_width - text_width) / 2
看书结论:
看书可以选择大概浏览也可以选择亲身投入进去实践,我看书选择任何一个内容都会自己去实践一遍,即使是很简单得print 打印一行内容或者2 + 2做个计算,我都会去手动去执行一遍,你不执行感觉理所应当是这样得结果,你执行了哦,真是这样得结果。其实是没有什么问题,但是对于我而言我总会把我自己定位得很低,事实上确实如此,那我有什么理由不去动手去做呢,即使很简单。书中得写的内容你不能保证作者是没有一点错误得,你能发现错误并且去想到底是哪里错误,这里是你自己得成长,自己得提高,书中给不了你的。
本文出自 “一个梦” 博客,转载请与作者联系!