我无法查看列表,看看有没有东西存在,否则将它添加到列表中
所以我遇到了我的程序的一部分应该得到用户输入的麻烦,看看它是否存在一个名为“线索”。如果不是,则应将其添加到列表中,如果它已经存在于列表中,则应打印出错消息。我无法查看列表,看看有没有东西存在,否则将它添加到列表中
的一段代码到目前为止如下...
#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%
但是更多的配对可以加入到这个....
必须行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
它似乎不喜欢打印后打破(“该信件不存在或已被输入”) – user3633316 2014-09-18 20:09:17
是的,你需要删除休息!当删除'for' – Kasramvd 2014-09-18 20:12:13
它仍然和以前一样......如果我发布所有代码,会更容易吗? – user3633316 2014-09-18 20:14:23
你是如何调用'add_pairing'?我试着用一个空的列表调用它,并没有打印“配对已被添加”。 – Kevin 2014-09-18 20:01:21
我打电话给add_pairing从用户输入一个数字去一个具体的选项的菜单.... – user3633316 2014-09-18 20:03:44
我已经将它添加到我的程序的末尾... – user3633316 2014-09-18 20:05:26