图灵 《Python基础教程》第2版,代码2-3问题

书上原代码:

=====================================================================================

#!/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

print ' ' * left_margin + '+' + '-' * (box_width) + '+'

print ' ' * left_margin + '|' + ' ' * text_width + '|'

print ' ' * left_margin + '|' +         sentence + '|'

print ' ' * left_margin + '|' + ' ' * text_width + '|'

print ' ' * left_margin + '+' + '-' * (box_width) + '+'

print

=====================================================================================

执行结果:

clipboard

我修改后代码:

=====================================================================================

#!/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

print ' ' * box_width + '+' + '-' * (box_width) + '+'

print ' ' * left_margin + '|' + ' ' * text_width + '|'

print ' ' * left_margin + '|' +         sentence + '|'

print ' ' * left_margin + '|' + ' ' * text_width + '|'

print ' ' * box_width + '+' + '-' * (box_width) + '+'

print

=====================================================================================

执行结果:

clipboard[1]

 

需求:---------------在屏幕中打印一个由字符组成的“盒子”,而这个“盒子”在屏幕上居中而且能够根据用户输入得句子自动调整大小------------

解刨:

  (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做个计算,我都会去手动去执行一遍,你不执行感觉理所应当是这样得结果,你执行了哦,真是这样得结果。其实是没有什么问题,但是对于我而言我总会把我自己定位得很低,事实上确实如此,那我有什么理由不去动手去做呢,即使很简单。书中得写的内容你不能保证作者是没有一点错误得,你能发现错误并且去想到底是哪里错误,这里是你自己得成长,自己得提高,书中给不了你的。

本文出自 “一个梦” 博客,转载请与作者联系!

你可能感兴趣的:(问题,python,基础教程)