首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打印5的乘法表

打印5的乘法表
EN

Code Review用户
提问于 2019-03-12 11:07:33
回答 2查看 1.6K关注 0票数 1
代码语言:javascript
复制
i=0
while i<=10:
    i+=1
    if i==5:
        continue
    print i*5

它打印5的乘法表,并跳过数列中的第5个数字。

EN

回答 2

Code Review用户

发布于 2019-03-12 15:26:56

这是对最短问题的最长可能答案..。

如何在python

中创建更好的循环

  1. iterables
  2. for
  3. range
  4. 清单理解
  5. 生成器表达式

如何改进这个特定的代码

  1. 写它最简单的方法是什么?
  2. 写它的最短方法是什么?

如何在python

中创建更好的循环

1. iterables

For循环可以对任何可迭代性进行迭代。什么是可迭代的?迭代是一个可以迭代的对象。

更严重的是,可迭代对象本身就是其他对象的序列。列表是可迭代的,但当您更多地了解python时,它并不是唯一的列表。

2. for循环

for循环可以迭代一个可迭代(在本例中是一个列表),如下所示:

代码语言:javascript
复制
for i in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
    print(i)

3. range

前面的例子很难看,因为: 1.硬编码的值不易更改,容易出错。2.我们将前10个正整数存储在内存中,它占用144个字节,但不能扩展,就好像我想要前1000000个正整数一样,我需要内存的9 mo

这就是range进来的地方,它是一种可迭代的,不占用太多空间,并且经常用于循环中:

代码语言:javascript
复制
for i in range(10):
    print(i)

注意:在早期版本的python中,range创建了一个列表,与第一个示例相当。

如果我只想要22到42之间的数字,跳过每一个奇数呢:

代码语言:javascript
复制
for i in range(22, 43, 2):
    # range(start, end, step) <- this is a comment
    print(i)

注意:range(22, 43)实际上不包括43个

4.列表理解

但是等等,我不想要一个5在我的范围内,我怎么能移除它?

代码语言:javascript
复制
for i in range(10):
    if i==5:
        continue
    print(i)

延续的技术术语是“丑陋的”。

相反,您可以使用以下内容:

代码语言:javascript
复制
for i in range(10):
    if i!=5:
        print(i)

这更好,但不是我想给你看的。我想向你们展示的是清单上的理解:

代码语言:javascript
复制
l = [n for n in range(10) if n!=5]
for i in l:
    print(i)

列表是可迭代的记忆。嗯,我已经创建了一个列表,其中包含了除5以外的前10个数字。

5.生成器表达式

还请记住,我曾经说过,由于内存效率低下,列表是一个非常糟糕的选择。幸运的是,我们有了更好的解决方案,生成器表达式:

代码语言:javascript
复制
l = (n for n in range(10) if n!=5)
for i in l:
    print(i)

什么改变了?括号!就这么简单。

但是等等,我想做5桌,我怎么做呢?

代码语言:javascript
复制
l = (n for n in range(10) if n!=5)
for i in l:
    print(i*5)

是的,这很管用,但如果.

代码语言:javascript
复制
l = (n*5 for n in range(10) if n!=5)
for i in l:
    print(i)

是的,这也有效..。

如何改进您的特定代码

1.最简单的编写它的方法是什么?

代码语言:javascript
复制
for i in range(10):
    if i!=5:
        print(i*5)

2.写

的最短方法是什么?

代码语言:javascript
复制
print('\n'.join(str(n*5) for n in range(10) if n!=5))
or 
print(*(n*5 for n in range(10) if n!=5), sep='\n')

随着您了解更多关于python的知识,您可能会倾向于使用第二个版本。但这不是奏鸣曲,因为它至少违反了提摩太的六条诫命:

漂亮比ugly.<好,显式比implicit.好,简单比complex.<好,平面比complicated.好,稀疏比nested.<好,dense.<可读性好,counts.<特例不够特殊,不足以突破rules.,尽管实用性优于purity.错误不应通过silently.,除非在歧义面前明确silenced.。拒绝guess.的诱惑--最好只有一种--做it.<的明显方式--虽然这种方式一开始可能并不明显,除非您现在的Dutch.比never.好--尽管如果实现很难解释,那么永远也不会比正确的now.更好,如果实现很容易解释的话,这是一个不好的idea.,可能是一个很好的idea.名称空间是一个很棒的主意--让我们做更多的事情吧!

在家里读import this

某些循环技术在某些情况下可能更合适,但至少现在您知道了这些技术是什么。

票数 5
EN

Code Review用户

发布于 2019-03-12 11:30:36

我不使用Python编程,但这是一个非常简单的问题。这是密码,我会帮你把它分解

代码语言:javascript
复制
for i in range(0, 10):
     if i != 5:
          print (i*5)

让我们再来看看这个。第一行是for循环播放。这类循环有点像while循环,但是它为您创建并增加了变量,并且更难实现无限大。该行的range()部分只表示从0开始i,并将其增加1直到达到10。

下一行只是检查是否是i == 5,如果是的话,它将不会打印结果。

如果i*5不是5,则最后一行只打印i

票数 0
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/215252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档