Python加扰程序
这个程序在句子中提取单词并将其置乱。 这些规则是: -第一个字母和最后一个字母保持不变 -单词末尾的标点符号保持不变 -带单词的标点符号与中间字母一样混乱 我的问题是,如果我在一个单词的末尾有多个标点符号,它就不会将其置乱 Ex)测试!!!应该有点像t!斯蒂!该死!或者t!美国东部时间!该死! 但不是tstenig 我怎样才能解决这个问题Python加扰程序,python,python-3.x,Python,Python 3.x,这个程序在句子中提取单词并将其置乱。 这些规则是: -第一个字母和最后一个字母保持不变 -单词末尾的标点符号保持不变 -带单词的标点符号与中间字母一样混乱 我的问题是,如果我在一个单词的末尾有多个标点符号,它就不会将其置乱 Ex)测试!!!应该有点像t!斯蒂!该死!或者t!美国东部时间!该死! 但不是tstenig 我怎样才能解决这个问题 import random import string original_text = input("Enter your text: ").split('
import random
import string
original_text = input("Enter your text: ").split(' ')
seed = int(input("Enter a seed (0 for random): "))
punctuation = []
for c in string.punctuation:
punctuation.append(c)
if seed is not 0:
random.seed(seed)
randomized_list = []
def scramble_word(word):
alpha = word[0]
end_punctuation = ''
if word[-1] in punctuation:
x = -1
while word[x] in punctuation:
end_punctuation += word[x]
x -= 1
omega = word[x]
middle = word[1: x]
else:
omega = word[-1]
middle = word[1:-1]
end_punctuation = ""
middle_list = list(middle)
random.shuffle(middle_list)
shuffled_text = "".join(middle_list)
new_words = alpha + shuffled_text + omega + end_punctuation
return new_words
for item in original_text:
if len(item) <= 3:
randomized_list.append(item)
else:
randomized_list.append(scramble_word(item))
new_words = " ".join(randomized_list)
print(new_words)
随机导入
导入字符串
原始文本=输入(“输入文本:”)。拆分(“”)
seed=int(输入(“输入种子(0表示随机):”)
标点符号=[]
对于字符串中的c。标点符号:
标点符号。附加(c)
如果种子不是0:
随机。种子(种子)
随机_列表=[]
def加扰字(字):
阿尔法=字[0]
结束\标点符号=“”
如果标点符号中有单词[-1]:
x=-1
而标点符号中的单词[x]:
结束标点符号+=单词[x]
x-=1
ω=单词[x]
中间=单词[1:x]
其他:
ω=单词[-1]
中间=单词[1:-1]
end_标点符号=“”
中间列表=列表(中间)
随机。洗牌(中间列表)
混乱的_text=”“.加入(中间的_列表)
新词=字母+混合文字+欧米茄+结尾标点符号
返回新词
对于原始文本中的项目:
如果len(item)则问题在于没有在无序排列中添加标点符号;见下面两行修订内容:
if word[-1] in punctuation:
x = -1
while word[x] in punctuation:
end_punctuation += word[x]
x -= 1
omega = word[x]
middle = word[1: x] + end_punctuation[1:] # Include all except the final character
end_punctuation = end_punctuation[0] # Just use the final character
else:
omega = word[-1]
middle = word[1:-1]
end_punctuation = ""
这对我来说是个诀窍:
In [63]: scramble_word('hello!?$')
Out[63]: 'hle?l!o$'
In [64]: scramble_word('hello!?$')
Out[64]: 'h?!ello$'
In [65]: scramble_word('hello!?$')
Out[65]: 'hlel!?o$'
In [66]: scramble_word('hello!')
Out[66]: 'hlleo!'
In [67]: scramble_word('hello!')
Out[67]: 'hello!'
In [68]: scramble_word('hello!')
Out[68]: 'hlleo!'
In [69]: scramble_word('hello')
Out[69]: 'hlelo'
顺便说一下,您不需要标点符号
变量<代码>字符串中的单词[x]。标点符号也会起作用。我对它的理解可以将代码缩短一点。(在Python 3.5.1中)
例如,我的输出来自:
马斯特森!!%&烤土豆棒极了
到
是的!奥斯!a%&mkeas bigkna%$patooets gerat
我相信有人会把它缩短得更明显
import random
words = input("Enter your text: ")
def scramble(words):
for x in words.split():
middle = x[1:-1]
middle_list = list(middle)
random.shuffle(middle_list)
shuffled = "".join(middle_list)
print ("".join(x[0]+shuffled+x[-1]),"", end="")
scramble(words)