如何仅调用一次input()并将Python功能代码精简为一行?
解决方案
可以利用Python 3.8+支持的**海象运算符:=**实现仅调用一次input(),同时将代码精简为一行,改写后的代码如下:
print(' '.join(sorted([c if (ord(c)-97)%2==0 else c.upper() for c in (s:=input())], reverse=True)))
说明:
- 海象运算符
(s:=input())会先执行input()获取输入内容,将值赋值给变量s,同时把s作为列表推导式的遍历对象,全程仅调用一次input()。 - 列表推导式直接遍历
s的每个字符c,替代了原代码中通过range(len(input_string))取索引的写法,代码更简洁。 - 其余逻辑和你原代码完全一致:判断字符对应的小写ASCII码减97后是否为偶数,是则保留原字符,否则转为大写;最后将处理后的字符倒序排序,用空格连接后打印。
内容的提问来源于stack exchange,提问作者mohammad
相关产品推荐
相关产品推荐

