【发布时间】:2019-05-12 20:35:03
【问题描述】:
我是 Python 新手,很抱歉我的丑陋代码... 我需要创建一个程序,允许我使用另一个列表中的条件重新排列列表。 我有一个包含名字的列表和一个包含姓氏的列表(排序很重要,因为每个名字都对应于 eahc 姓氏)。这个想法是创建一个从名字中随机选取的新列表,条件是两个姓氏不能并排(并且姓氏的最后一项和第一项必须不同)......我不确定这里很清楚,希望你看我的代码就能明白。
下面是我的代码(它在删除 while 循环并手动重复它时有效......)。我确信有一种方法可以非常简单地做到这一点......
有什么帮助吗?
梅尔
我的代码:
import random
first_names = ['an','bn','ji','au','jo','ki','ko','bo','mi','li']
last_names = ['A','A','A','R','R','R','C','C','C','C']
results =[]
results_names = []
#picking the first item
tirage = random.choice(list(enumerate(first_names)))
index = tirage[0]
pren = tirage[1]
results.append(pren)
results_names.append(last_names[index])
first_names.remove(pren)
last_names.pop(index)
while len(first_names) > 0 :
tirage = random.choice(list(enumerate(first_names)))
index = tirage[0]
pren = tirage[1]
if last_names[index] != results_names[len(last_names)-1]:
results.append(pren)
results_names.append(last_names[index])
first_names.remove(pren)
last_names.pop(index)
print(results)
print(results_names)
if len(resultats_noms) == 10:
print('liste completed')
if len(first_names)>9 and last_names[index] == results_names[len(results_names)-1]:
print('blocked, need to restart',len(results_names),'first names of 10')
【问题讨论】:
-
你的第二个和第三个 if 语句在 while 循环之外,你试过缩进吗?
-
把你的句子转换成英文
-
while循环需要随机选择下一个名字;它需要与注释
#picking the first item.下面的代码部分相似(或可能相同)的代码 -
对不起,我再次编辑我的代码,复制粘贴的问题......是的,你是对的 wwii
-
您需要更新您的
index。
标签: python list random while-loop list-comprehension