【问题标题】:Write a program that prints the integers from 1 to 100 (inclusive) in one line of code, however编写一个程序,在一行代码中打印从 1 到 100(含)的整数,但是
【发布时间】:2017-05-21 17:40:21
【问题描述】:

我是 python 新手,想编写一个程序,使用 python 在 1 行 中打印从 1 到 100(含)的整数,但是:

  • 对于三的倍数,打印shell(而不是数字)
  • 对于 5 的倍数,打印 fish(而不是数字)
  • 对于 3 和 5 的倍数,打印 shellfish(而不是数字)

不幸的是,我可以做到这一点,但不能用一行代码:

 for i in xrange(1, 101):
    if i % 15 == 0:
        print "shellfish"
    elif i % 3 == 0:
        print "shell"
    elif i % 5 == 0:
        print "fish"
    else:
        print i

怎样才能把这段源码写成一行?

【问题讨论】:

  • 如果你想在一行上写多个语句,你可以使用分号;。所以理论上你可以在一行上写一个完整的程序。不过,如果单行代码会使程序更难阅读,请考虑不要使用它们。您当前拥有的内容比等效的单行代码更具可读性和更易理解。
  • 这非常适合PPCG上的tips标签
  • 您的问题含糊不清。您希望源代码在一行,还是脚本的输出在一行?
  • 源代码。我知道如何让它打印在一行上我不是那么新:)

标签: python python-2.x


【解决方案1】:

要将您的尝试转换为 1 行,您可以使用*,这是 python 中的重复运算符:

for i in xrange(1,101): print("shell"*(i%3==0) + "fish"*(i%5==0) or i)

【讨论】:

  • 这个问题看起来像家庭作业,所以最好用一个建议来回答,而不是用一个可以复制的答案......
  • 我明白,但看起来 OP 找出了困难的部分(带模的东西)并进行了很好的尝试。
【解决方案2】:

使用条件表达式:true_value if cond else false_value 我们得到这个 - 有点无聊 - 解决方案:

for i in xrange(1, 101): print (i if i % 5 else "fish") if i % 3 else ("shell" if i % 5 else "shellfish")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 2020-09-12
    • 2011-07-09
    相关资源
    最近更新 更多