【问题标题】:One-liner to print two statements in a for-loop in one line单行在一行中的 for 循环中打印两个语句
【发布时间】:2022-01-21 07:21:22
【问题描述】:

如何在一行中编写此代码?这个概念是你应该:

  • 从用户那里得到一个输入并检查(字符的 ASCII 形式) - 97 是否可以被 2 整除
    • 如果是,您应该打印字符的原始形式
    • 否则,您应该打印字符的大写形式。
  • 最后,你应该颠倒答案。
  • 例如,如果输入是alexander,那么输出应该是e e a a X R N L D
  • 但是应该是一行而且只有一行,我想出了一个解决方案但是是3行,我不知道下一步该怎么做。

这是我目前想出的代码:

h = []
for i in input() : h.append(i.lower() if (ord(i) - 97) % 2 == 0 else i.upper())
print(*sorted(h, reverse=True))

问题的原始代码,你应该转换成一行是:

input_string = str(input())
array = []
for i in range(len(input_string)):
    if (ord(input_string[i]) - 97) % 2 == 0:
        array.append(input_string[i])
    else:
        array.append(input_string[i].upper())
array.sort(reverse=True)
answer = ' '.join(array)
print(answer)

【问题讨论】:

标签: python one-liner


【解决方案1】:

列表理解(我没有检查你的代码,只是重写它):

h = []
for i in input() : h.append(i.lower() if (ord(i) - 97) % 2 == 0 else i.upper())
print(*sorted(h, reverse=True))

print(*sorted([i.lower() if (ord(i)-97)%2 == 0 else i.upper() for i in input() ], reverse=True))

引用你的问题:

你应该打印字符的原始形式

目前代码不是这样做的,只是说你知道。

阅读您删除的评论后:

如果您想知道列表理解中的 ifelse

你可以把它放在你的列表中,但如果这是你的问题(显然是实际问题),那么我建议使用谷歌,有很多使用它的例子。:if/else in a list comprehensionhttps://towardsdatascience.com/a-gentle-introduction-to-flow-control-loops-and-list-comprehensions-for-beginners-3dbaabd7cd8ahttps://pythonguides.com/python-list-comprehension-using-if-else/

【讨论】:

  • 我并不反对这个答案。但这是什么愚蠢的家庭作业?为什么我们要教学生写不可读的代码?我
  • @FrankYellin 我同意你的观点,但我希望提问者能从这段代码中学到一些东西,最重要的是如何编写综合列表。这是其他人也经常使用的一种技术,因此最好了解它的工作原理,以便可以读取其他人的代码。
  • @3DspatialUser。我意识到这是“正确答案”,但我希望在实际代码中,学生应该知道正确答案是letters = [.....];,然后是print(*sorted(letters))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
  • 1970-01-01
  • 2018-10-17
  • 2020-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多