Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_String_Replace - Fatal编程技术网

从单词python开始创建新词

从单词python开始创建新词,python,string,replace,Python,String,Replace,我有一个三个字母的单词输入,例如car,它是起始单词。 然后,我必须创建一个新单词,每次用字母表中的每个字母替换一个字母。使用我的示例car,我想创建单词,aar,bar,car,dar,ear,…,zar。然后创建单词car、cbr、ccr、cdr、cer、…、czr。最后是caa,cab,cac,cad,cae,…,caz 我真的不知道for循环应该是什么样子。我在考虑创建某种字母表列表,通过循环创建新单词,但我不知道如何选择原始单词的哪些部分应该保留。新单词可以附加到要返回的列表中。您可以

我有一个三个字母的单词输入,例如car,它是起始单词。 然后,我必须创建一个新单词,每次用字母表中的每个字母替换一个字母。使用我的示例car,我想创建单词,aar,bar,car,dar,ear,…,zar。然后创建单词car、cbr、ccr、cdr、cer、…、czr。最后是caa,cab,cac,cad,cae,…,caz


我真的不知道for循环应该是什么样子。我在考虑创建某种字母表列表,通过循环创建新单词,但我不知道如何选择原始单词的哪些部分应该保留。新单词可以附加到要返回的列表中。

您可以通过两个循环来完成此操作,即在单词上循环,然后在所有字母的范围内循环。通过为第一个循环保留索引,可以使用切片来构造新字符串:

def make_new_words(start_word):
    """create new words from given start word and returns new words"""
    new_words=[]
    for letter in start_word:
        pass    
        #for letter in alphabet:
        #do something to change letters
        #new_words.append(new_word)
import string
all_letters = string.ascii_lowercase
def make_new_words(start_word):
    for index, letter in enumerate(start_word):
        template = start_word[:index] + '{}' + start_word[index+1:]
        for new_letter in all_letters:
            print template.format(new_letter)

您可以通过两个循环来完成此操作,即在单词上循环,然后在所有字母的范围内循环。通过为第一个循环保留索引,可以使用切片来构造新字符串:

import string
all_letters = string.ascii_lowercase
def make_new_words(start_word):
    for index, letter in enumerate(start_word):
        template = start_word[:index] + '{}' + start_word[index+1:]
        for new_letter in all_letters:
            print template.format(new_letter)
lowercase只是一个包含小写字母的字符串

我们想改变原来单词的每个字母,所以我们 迭代w的字母,但是我们主要需要字母的索引,所以我们在enumeratew上执行for循环

首先,在python中字符串是不可变的,所以我们从w。。。列表是可变的

现在是第二个小写字母的内部循环:我们相应地更改了x列表的当前元素,在更改了x之后,我们需要在下一个内部循环之前重置它,最后打印它

因为我们想要打印一个字符串而不是列表中的字符,所以我们使用空字符串的join方法将x元素粘合在一起,当然,使用空字符串

我还没有报告输出,但它正是您所要求的,请尝试

for index in enumerate(start_word):
    for let in range(ord('a'), ord('z')+1):
        new_words.append(start_word[:index] + chr(let) + start_word[index+1:])
lowercase只是一个包含小写字母的字符串

我们想改变原来单词的每个字母,所以我们 迭代w的字母,但是我们主要需要字母的索引,所以我们在enumeratew上执行for循环

首先,在python中字符串是不可变的,所以我们从w。。。列表是可变的

现在是第二个小写字母的内部循环:我们相应地更改了x列表的当前元素,在更改了x之后,我们需要在下一个内部循环之前重置它,最后打印它

因为我们想要打印一个字符串而不是列表中的字符,所以我们使用空字符串的join方法将x元素粘合在一起,当然,使用空字符串

我还没有报告输出,但它正是您所要求的,请尝试

for index in enumerate(start_word):
    for let in range(ord('a'), ord('z')+1):
        new_words.append(start_word[:index] + chr(let) + start_word[index+1:])

这可能是一种蛮力方法,尽管当您尝试使用较长的单词时,可能会出现一些性能问题

听起来你可能只想把它限制在字典里某个时候存在的单词上,这是另一整罐蠕虫

但就目前而言,对于三个字母的单词,您已经走上了正确的轨道,尽管我担心这个问题对于堆栈溢出来说可能有点过于具体

首先,如果您循环搜索单词的索引,而不是字母,您可能会获得更大的成功:

from string import lowercase

w = 'car'
for i, _ in enumerate(w):
    x = list(w)
    for s in lowercase:
        x[i] = s
        print ''.join(x)
然后,您可以使用a来获取索引前后的字母

alphabet = 'abcdefghijklmnopqrstuvwxyz'
for i in range(len(start_word)):

上面给出了另一种方法,它将字符串强制转换为列表。这是因为python将不允许简单地设置start_word[i]=letter,。

这可能是一种蛮力方法,尽管当您尝试使用较长的单词时,可能会出现一些性能问题

听起来你可能只想把它限制在字典里某个时候存在的单词上,这是另一整罐蠕虫

但就目前而言,对于三个字母的单词,您已经走上了正确的轨道,尽管我担心这个问题对于堆栈溢出来说可能有点过于具体

首先,如果您循环搜索单词的索引,而不是字母,您可能会获得更大的成功:

from string import lowercase

w = 'car'
for i, _ in enumerate(w):
    x = list(w)
    for s in lowercase:
        x[i] = s
        print ''.join(x)
然后,您可以使用a来获取索引前后的字母

alphabet = 'abcdefghijklmnopqrstuvwxyz'
for i in range(len(start_word)):
上面给出了另一种方法,它将字符串强制转换为列表。这是因为python将不允许简单地将start\u word[i]=letter设置为。

可能希望将string.lowercase更改为string.ascii\u lowercase可能希望将string.lowercase更改为string.ascii\u lowercase