我正在创建一个单词生成工具,它接受提供的单词并添加各种混淆。
现在我正在实现我想要做的事情,但我的方法似乎很冗长。有更好的方法吗?
#!/usr/local/bin/python
words = raw_input("Enter Word!: ")
def add_numbers(wordlist):
parts = wordlist.split()
numbers_list = ["1","2","3","4","5","6","7","8","9","10"]
try:
value1 = parts[0]
value2 = parts[1]
value3 = parts[2]
value4 = parts[3]
value5 = parts[4]
except IndexError:
bads = 'null'
try: value1
except NameError: value1 = None
try: value2
except NameError: value2 = None
try: value3
except NameError: value3 = None
try: value4
except NameError: value4 = None
try: value5
except NameError: value5 = None
if value1 is None:
pass
else:
first_list = []
first_list.append(value1+str(numbers_list[0]))
first_list.append(value1+str(numbers_list[0])+str(numbers_list[1]))
first_list.append(value1+str(numbers_list[0])+str(numbers_list[1])+str(numbers_list[2]))
first_list.append(value1+str(numbers_list[0])+str(numbers_list[1])+str(numbers_list[2])+str(numbers_list[3]))
first_list.append(value1+str(numbers_list[0])+str(numbers_list[1])+str(numbers_list[2])+str(numbers_list[3])+str(numbers_list[4]))
first_list.append(value1+str(numbers_list[0])+str(numbers_list[1])+str(numbers_list[2])+str(numbers_list[3])+str(numbers_list[4])+str(numbers_list[5]))
first_list.append(value1+str(numbers_list[0])+str(numbers_list[1])+str(numbers_list[2])+str(numbers_list[3])+str(numbers_list[4])+str(numbers_list[5])+str(numbers_list[6]))
first_list.append(value1+str(numbers_list[0])+str(numbers_list[1])+str(numbers_list[2])+str(numbers_list[3])+str(numbers_list[4])+str(numbers_list[5])+str(numbers_list[6])+str(numbers_list[7]))
first_list.append(value1+str(numbers_list[0])+str(numbers_list[1])+str(numbers_list[2])+str(numbers_list[3])+str(numbers_list[4])+str(numbers_list[5])+str(numbers_list[6])+str(numbers_list[7])+str(numbers_list[8]))
first_list.append(value1+str(numbers_list[0])+str(numbers_list[1])+str(numbers_list[2])+str(numbers_list[3])+str(numbers_list[4])+str(numbers_list[5])+str(numbers_list[6])+str(numbers_list[7])+str(numbers_list[8])+str(numbers_list[9]))
print first_list
if value2 is None:
pass
else:
second_list = []
second_list.append(value2+str(numbers_list[0]))
second_list.append(value2+str(numbers_list[0])+str(numbers_list[1]))
second_list.append(value2+str(numbers_list[0])+str(numbers_list[1])+str(numbers_list[2]))
second_list.append(value2+str(numbers_list[0])+str(numbers_list[1])+str(numbers_list[2])+str(numbers_list[3]))
second_list.append(value2+str(numbers_list[0])+str(numbers_list[1])+str(numbers_list[2])+str(numbers_list[3])+str(numbers_list[4]))
second_list.append(value2+str(numbers_list[0])+str(numbers_list[1])+str(numbers_list[2])+str(numbers_list[3])+str(numbers_list[4])+str(numbers_list[5]))
second_list.append(value2+str(numbers_list[0])+str(numbers_list[1])+str(numbers_list[2])+str(numbers_list[3])+str(numbers_list[4])+str(numbers_list[5])+str(numbers_list[6]))
second_list.append(value2+str(numbers_list[0])+str(numbers_list[1])+str(numbers_list[2])+str(numbers_list[3])+str(numbers_list[4])+str(numbers_list[5])+str(numbers_list[6])+str(numbers_list[7]))
second_list.append(value2+str(numbers_list[0])+str(numbers_list[1])+str(numbers_list[2])+str(numbers_list[3])+str(numbers_list[4])+str(numbers_list[5])+str(numbers_list[6])+str(numbers_list[7])+str(numbers_list[8]))
second_list.append(value2+str(numbers_list[0])+str(numbers_list[1])+str(numbers_list[2])+str(numbers_list[3])+str(numbers_list[4])+str(numbers_list[5])+str(numbers_list[6])+str(numbers_list[7])+str(numbers_list[8])+str(numbers_list[9]))
print second_list
这样怎么样?
worldlist = "test hello world"
parts = worldlist.split()
values = list(range(1,11))
mangled = []
for part in parts:
l = []
val = ''
for x in values:
val += str(x)
l.append(part + val)
mangled.append(l)
for l in mangled:
print(l)
结果:
['test0', 'test01', 'test012', 'test0123', 'test01234', 'test012345', 'test0123456', 'test01234567', 'test012345678', 'test0123456789', 'test012345678910']
['hello0', 'hello01', 'hello012', 'hello0123', 'hello01234', 'hello012345', 'hello0123456', 'hello01234567', 'hello012345678', 'hello0123456789', 'hello012345678910']
['world0', 'world01', 'world012', 'world0123', 'world01234', 'world012345', 'world0123456', 'world01234567', 'world012345678', 'world0123456789', 'world012345678910']
从顶部开始:
#!/usr/local/bin/python
words = raw_input("Enter Word!: ")
def add_numbers(wordlist):
parts = wordlist.split()
numbers_list = ["1","2","3","4","5","6","7","8","9","10"]
在这里,您可以将各种默认值添加到parts
的末尾,以便在parts
过早"用完"时使用它们。我忽略了bads
,因为你似乎从不使用它。
value1, value2, value3, value4, value5 = (parts + [None]*5)[:5]
几乎没有任何理由将pass
与条件语句一起使用。在这里,您可以简单地反转测试并忽略else
。
if value1 is not None:
重复使用相同的子表达式,所以保存结果,这样就不需要一遍又一遍地做同样的事情。本质上,你只是想在迭代numbers_list
first_list = []
str_value = str(value1)
for num_value in numbers_list:
str_value += num_value
first_list.append(str_value)
print first_list
对value2
等也做同样的处理。
if value2 is not None:
second_list = []
str_value = str(value1)
for num_value in numbers_list:
str_value += num_value
second_list.append(str_value)
print second_list
您可能希望使用一个值列表,而不是5个单独的value1
, value2
等变量,但我将其作为练习来进行替换。
我真的很难理解你真正想要实现什么,但这里是更紧凑的代码,产生相同的结果:
def add_numbers(wordlist):
parts = wordlist.split()
for x in xrange(0, 2):
if len(parts) < x+1:
pass
else:
s = parts[x]
some_list = [s]
for i in xrange(1, 11):
s += str(i)
some_list.append(s)
print some_list
add_numbers('Carl stole corals from Clara')