import random
def create_code(characters,length):
"""(str,int) -> list
Return a list of length size of single character of the characters in the given str
>>>create_code('ygbopr')
['g','b','r','b']
"""
characters = 'grbyop'
length = 4
return list(random.sample(characters,length))
pass
def find_fully_correct(answer, guess):
"""(list,list) -> list
Return a list containing a 'b' for each correctly positioned color in the guess
>>>find_fully_correct(['g','b','r','b'], ['g','b','r','b'])
['b', 'b', 'b', 'b']
"""
res= []
for x, y in zip(guess, answer):
if x == y:
res.append("b")
return res if res else None
pass
def remove_fully_correct(answer, guess):
"""(list,list) -> list
Return a list that removes the chars from the first list that are the same and in the same postion in the second list
>>>remove_fully_correct(['a','b','c','d'], ['d','b','a','d'])
['a','c']
"""
res= answer
for x,y in zip(answer, guess):
if x == y:
res.remove(x)
list3 = remove_fully_correct(guess,answer)
list4 = remove_fully_correct(answer,guess)
for char in list4:
if char in list3:
return res
pass
def find_colour_correct(answer, guess):
"""(list,list) -> list
Return a list of 'w''s where the number of 'w''s is qual to the number of strs in the second list that have the same value as the str in the first list but a different position
>>>find_colour_correct(['y','n','g','g'], ['g','n','o','r'])
['w']
"""
res = []
for str in guess:
if str in answer:
res.append("w")
return res
pass
def print_game(guesses, clues):
"""(list,list) -> display
Print to display headers, Guess and Clue, with the corresponding sublists of the given lists
>>>print_game(guesses,clues)
Guesses Clues
o o o o b
r r r r b b
"""
print ('Guesses \t Clues')
guess = ''
clue = ''
guesses = guess_list
clues = clue_list
clue_list = (find_fully_correct, find_correct,colour)
for guess_list in guesses:
for index in range(len(guess_list)):
guess = guess + ' ' + guess_list[index]
guess = guess.lstrip()
for clue_list in clues:
for char in range (len(clue_list)):
clue = clue + ' ' + clue_list[char]
clue = clue.lstrip()
print (guess + ' \t ' + clue + '\n')
pass
def valid(user_guess, valid_chars, size):
if len(user_guess) != size or user_guess not in valid_chars:
return False
else:
return True
pass
if __name__ == '__main__':
size = 4
tries = 10
valid_chars= 'grbyop'
试图编码的策划者游戏,其中涉及创建一个隐藏的颜色组合或代码-由4个颜色代码从6个颜色由程序选择。破译者试图通过代码猜出代码。然后,程序通过告诉第二个玩家猜到的颜色代码中有多少正确定位的颜色,以及猜测中有多少正确但定位错误的颜色,从而对猜测的正确性给出反馈,直到用户猜测到实际的颜色代码或10次尝试都用完为止。在
我在print_game函数和valid函数上遇到问题
另外,我不知道如何命令实际的程序像一个游戏一样在if_uname_u=='main'部分之后运行。比如调用实际函数,向用户发出命令以查看进度。在
任何帮助都是非常感谢的。在