面试官:请使用python打印出乘法口诀表-小白上楼梯0x07

答:太没创意,再见!

面试官:壮士留步!帮我看看这位保安兄弟写的如何?他有没有理解For语句的用法?能不能使用range生成想要的序列?有没有合理地接接字符串?

range()函数的用法

`range()`函数,用来生成一个可迭代的对象,可以使用`list()`方法转化成一个`列表`,打开`AnacondaPrompt`,输入`python`进入python的shell环境:

在python的shell环境中可以直接尝试range的用法:

```

两个参数的range返回从第一个参数开头,到第二个参数结束的可迭代对象:range(1,11)--[1,11)list(range(1,11))[1,2,3,4,5,6,7,8,9,10]for语句

python的for语句也很好理解,基本的句式是:

```

for苹果in一框苹果:吃一口苹果不甜,扔掉

```

注意,`苹果`、`in`、`一框苹果`、`:(冒号)`、第二行的缩进,都是必须遵守这种格式的,才算一个完整的for语句。比如,输出1到9的数字:

```

foriinrange(1,10):print(i)123456789

```

再比如,使用for语句循环输入一个字符串的每一个字符:

```

forstrin'hello,world':print(str)hello,world

```

能看到这里,证明你这位看官是非常聪明好学的,心里一定在想着有了for语句之后,怎样给面试官写出乘法口诀表吧?接下来,咱就使用两个嵌套的for语句来实现乘法口诀表的输出。

输出1x1=12x1=23x1=34x1=45x1=56x1=67x1=78x1=89x1=9

```

看起来不错,在`y=1`的时候,顺利输出了9行乘法口诀。接下来,如果在x还是1的时候,我们用y进入x的主场梦境,在第二层梦境中y依次代表1-9,与x相乘,得到想输出的口决。在y值依次迭代的过程中,不需要每个乘式都输出为一行,而是用`\t`制表符来结束。在第二层梦境结束后,x开始继续下一次任务的时候换行即可。现在,就将x做为主场,再进一层梦境:

```

defjiujiu():forxinrange(1,10):输出1x1=11x2=21x3=31x4=41x5=51x6=61x7=71x8=81x9=92x1=22x2=42x3=62x4=82x5=102x6=122x7=142x8=162x9=183x1=33x2=63x3=93x4=123x5=153x6=183x7=213x8=243x9=274x1=44x2=84x3=124x4=164x5=204x6=244x7=284x8=324x9=365x1=55x2=105x3=155x4=205x5=255x6=305x7=355x8=405x9=456x1=66x2=126x3=186x4=246x5=306x6=366x7=426x8=486x9=547x1=77x2=147x3=217x4=287x5=357x6=427x7=497x8=567x9=638x1=88x2=168x3=248x4=328x5=408x6=488x7=568x8=648x9=729x1=99x2=189x3=279x4=369x5=459x6=549x7=639x8=729x9=81

```

观察输出,结果是一个方的,还重复了一半的数据。聪明的你一定想到,如果y能在第二层梦境中以x当前的值为参照的话,不从1到9,而是从1到x的话,就避免了不必要的重复了,小改一下y对应的range数值即可,输出的时候再将y放在前面,比较美观,修改第4、5行如下:

```

foryinrange(1,x+1):print('%dx%d=%d'%(y,x,x*y),='\t')x迭代1次之后,y开始以x为主场进入第二层迭代foryinrange(1,x+1):print('%dx%d=%d'%(y,x,x*y),='\t')print()if__name__=='__main__':jiujiu()

```

其实,我刚开始写的字符串拼接的是用`+`来完成的,像这样:

```

s+=str(j)+'x'+str(i)+'='+str(i*j)+'\t

```

也算是等通知的一种写法,下篇再具体说说字符串的几种拼接方式。

coding

PS:

算了,可能是因为我在最后放了一个倒序的时间点,说我

有诱导交易的推广信息

我诱导你家的毛线板板。

版权声明:本站所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请举报,一经查实,本站将立刻删除。

相关推荐