【发布时间】:2013-02-27 06:52:04
【问题描述】:
我希望程序假设我的 word_str 是“例如,这是‘剑桥大学’”。如果单词的长度大于 3 个字符,它将保留单词的第一个和最后一个字母,并打乱单词的内部。我的问题是它错误地在单词的开头或结尾用标点符号打乱了单词。我需要它来洗牌,以便标点符号保留在正确的索引中,然后保留单词的第一个和最后一个字母,并在单词的内部洗牌,如果有的话,在末尾添加标点符号。有什么想法吗?
def scramble_word(word_str):
char = ".,!?';:"
import random
if len(word_str) <= 3:
return word_str + ' '
else:
word_str = word_str.strip(char)
word_str = list(word_str)
scramble = word_str[1:-1]
random.shuffle(scramble)
scramble = ''.join(scramble)
word_str = ''.join(word_str)
new_word = word_str[0] + scramble + word_str[-1]
return new_word + ' '
【问题讨论】:
-
为什么不只打乱字母而忽略标点符号?
-
因为程序规范要求我不要忽略标点符号
-
但是如果你将它放回 在同一个地方就像在打乱之前一样,这在本质上完全模仿了忽略它的结果,同时打乱了字母数字字符.还是我错过了什么?
-
我怎么能打乱和忽略标点符号而只打乱字母数字?
标签: python string list function punctuation