Something is going wrong at the line:
copy_guess[:], copy_code[:] = zip(*((a, b) for a, b in zip(guess,code) if a != b))
error massage is:
ValueError: not enough values to unpack (expected 2, got 0)
import random
max_range = 5
code_lines = 4
def generate_code():
code_arr = []
for i in range(code_lines):
code_arr.append(random.randint(0,max_range))
return code_arr
def right_position(guess,code):
right_positions = 0
answer_position = [len(set(i)) == 1 for i in zip(guess,code)]
for x in answer_position:
if x == True:
right_positions += 1
return right_positions
def all_positions_right(guess,code):
answer_position = [len(set(i)) == 1 for i in zip(guess,code)]
return answer_position
this is where the problem is i think. it worked quite good without this but not evry time.
def wrong_position(guess,code):
char_number = 0
copy_guess = guess
copy_code = code
copy_guess[:], copy_code[:] = zip(*((a, b) for a, b in zip(copy_guess,copy_code) if a != b))
for a in copy_guess:
for b in copy_code:
if a == b:
char_number += 1
return char_number
the code is split in two files.
from mastermind_funcs import generate_code, right_position, wrong_position , all_positions_right
code_lines = 4
def guesslist_func():
i = 1
guess_list = []
while i <= code_lines:
x = int(input("guess number "))
guess_list.append(x)
i += 1
return guess_list
def main():
right_code = generate_code()
print(right_code)
true_list = [True,True,True,True]
value = True
guess_count = 0
while value:
guess_list = guesslist_func()
if all_positions_right(guess_list,right_code) == true_list:
value = False
print("grattis, coden var " , right_code , ".")
else:
if right_position(guess_list,right_code) > 0:
print(right_position(guess_list,right_code))
print(wrong_position(guess_list,right_code))
else:
print(wrong_position(guess_list,right_code))
guess_count += 1
print("du klarade det på" , guess_count , "gissningar.")
if __name__ == "__main__":
main()
evrything works fine except wrong_position