我无法查看列表,看看有没有东西存在,否则将它添加到列表中

问题描述:

所以我遇到了我的程序的一部分应该得到用户输入的麻烦,看看它是否存在一个名为“线索”。如果不是,则应将其添加到列表中,如果它已经存在于列表中,则应打印出错消息。我无法查看列表,看看有没有东西存在,否则将它添加到列表中

的一段代码到目前为止如下...

#PROCEDURE FOR ADDING A NEW PAIRING 
def add_pairing(clues): 
    addClue = False 
#USER INPUTS A LETTER AND SYMBOL 
    letter=input("What letter would you like to add? ").upper() 

    symbol=input("\nWhat symbol would you like to pair with ").upper() 
    userInput= letter + symbol 
#GOES THROUGH CLUES TO SEE IF THE PAIRING HAS ALREADY BEEN ENTERED 
    for clue in clues: 
#IF THE CLUE HAS ALREADY BEEN ADDED, IT WILL PRINT A MESSAGE   
     if letter in clues: 
      print("The letter either doesn't exist or has already been entered ") 
      break 
     elif symbol in clues: 
      print("The letter either doesn't exist or has already been entered") 

     elif len(userInput) ==1: 
      print("You can only enter one character") 

#IF THE CLUE DOESN'T EXIST IN CLUES, IT WILL GO TO THE else STATEMENT  
     else: 
      newClue = letter + symbol 
      addClue = True 
    if addClue == True: 
     clues.append(newClue) 
    #PRINTS MESSAGE SAYING THAT THE PAIRING HAS BEEN ADDED 
     print("The pairing has been added") 
#PRINTS CLUES AFTER THE PAIRING HAS BEEN ADDED 
     print (clues) 
    return clues 

当我运行该程序,并选择选项添加一个配对结果如下......

What letter would you like to add? a 

What symbol would you like to pair with # 
The pairing has been added 
['A#', 'M*', 'N', 'A#'] 

问题是,我输入了'a#'后,它仍然将它添加到线索列表中,尽管已经存在线索列表...

正确的结果应该如下所示...

What letter would you like to add? a 

What symbol would you like to pair with # 
The pairing already exists in list of clues 
['A#', 'M*', 'N',] 

我打电话从菜单add_pairing ...

--- ENTER THE NUMBER TO GO TO THAT OPTION --- 

0 - QUIT 
1 - ADD A LETTER AND SYMBOL PAIRING 
2 - DELETE A PAIRING 
3 - DISPLAY CLUES SO FAR 
4 - CHECK YOUR GUESSES WITH THE REAL VERSION 
5 - CALCULATE THE FREQUENCY 

""" 
) 

在菜单如下add_pairing函数的代码..

elif choice == "1": 
    add_pairing(clues) 

代码检查用户线索与正确的线索...

#PROCEDURE FOR CHECKING WITH SOLVED FILE 
def check_clues(): 
count = 0 
# TRIES TO OPEN FILE SOLVED.TXT 
try: 
    with open('solved.txt') as r: 
# READS THROUGH ALL THE LINES IN SOLVED.TXT 
     solved = r.readlines() 
# WILL DISPLAY AN ERROR MESSAGE IF SOLVED.TXT IS NOT FOUND 
except: 
    print("Error finding file") 
# WILL TRY AND OPEN THE FILE 'clues.txt' 
try: 
    with open('clues.txt') as r: 
     pairings = r.readlines() 
except: 
    print("Error finding ") 


# GOES THROUGH BOTH THE USERS CLUES AND SOLVED.TXT TO SEE HOW MANY PAIRINGS ARE THE SAME 
for solve in solved: 
    for user in pairings: 
     if pairings in solved: 
      count =+ 1 
# Prints the amount of clues the user got right out of 10 
print('You got:', count, 'out of', len(solved), 'correct!') 

Solved.txt ...

ACQUIRED 
ALMANAC 
INSULT 
JOKE 
HYMN 
GAZELLE 
AMAZON 
EYEBROWS 
AFFIX 
VELLUM 

Clues.txt ...

A# 
M* 
N% 

但是更多的配对可以加入到这个....

+0

你是如何调用'add_pairing'?我试着用一个空的列表调用它,并没有打印“配对已被添加”。 – Kevin 2014-09-18 20:01:21

+0

我打电话给add_pairing从用户输入一个数字去一个具体的选项的菜单.... – user3633316 2014-09-18 20:03:44

+0

我已经将它添加到我的程序的末尾... – user3633316 2014-09-18 20:05:26

必须行if letter in clues:改变if userInput in clues:,因为您不必检查您的阵列中是否存在userInput

另外,您在编写01时也不需要 python解释器搜索你的数组本身!

使你的代码必须是这样的:

#PROCEDURE FOR ADDING A NEW PAIRING 
def add_pairing(clues): 
    addClue = False 
#USER INPUTS A LETTER AND SYMBOL 
    letter=input("What letter would you like to add? ").upper() 

    symbol=input("\nWhat symbol would you like to pair with ").upper() 
    userInput= letter + symbol 
#GOES THROUGH CLUES TO SEE IF THE PAIRING HAS ALREADY BEEN ENTERED 
#IF THE CLUE HAS ALREADY BEEN ADDED, IT WILL PRINT A MESSAGE   
    if userInput in clues: 
      print("The letter either doesn't exist or has already been entered ") 
    elif len(userInput) ==1: 
      print("You can only enter one character") 

#IF THE CLUE DOESN'T EXIST IN CLUES, IT WILL GO TO THE else STATEMENT  
    else: 
      newClue = letter + symbol 
      addClue = True 
    if addClue == True: 
     clues.append(newClue) 
    #PRINTS MESSAGE SAYING THAT THE PAIRING HAS BEEN ADDED 
     print("The pairing has been added") 
#PRINTS CLUES AFTER THE PAIRING HAS BEEN ADDED 
     print (clues) 
    return clues 

编辑: 改变你的检查命令如下:

for user in pairings: 
    if user in solved: 
      count =+ 1 
+0

它似乎不喜欢打印后打破(“该信件不存在或已被输入”) – user3633316 2014-09-18 20:09:17

+0

是的,你需要删除休息!当删除'for' – Kasramvd 2014-09-18 20:12:13

+0

它仍然和以前一样......如果我发布所有代码,会更容易吗? – user3633316 2014-09-18 20:14:23