Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python加扰程序_Python_Python 3.x - Fatal编程技术网

Python加扰程序

Python加扰程序,python,python-3.x,Python,Python 3.x,这个程序在句子中提取单词并将其置乱。 这些规则是: -第一个字母和最后一个字母保持不变 -单词末尾的标点符号保持不变 -带单词的标点符号与中间字母一样混乱 我的问题是,如果我在一个单词的末尾有多个标点符号,它就不会将其置乱 Ex)测试!!!应该有点像t!斯蒂!该死!或者t!美国东部时间!该死! 但不是tstenig 我怎样才能解决这个问题 import random import string original_text = input("Enter your text: ").split('

这个程序在句子中提取单词并将其置乱。 这些规则是: -第一个字母和最后一个字母保持不变 -单词末尾的标点符号保持不变 -带单词的标点符号与中间字母一样混乱

我的问题是,如果我在一个单词的末尾有多个标点符号,它就不会将其置乱

Ex)测试!!!应该有点像t!斯蒂!该死!或者t!美国东部时间!该死! 但不是tstenig

我怎样才能解决这个问题

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)