为什么 gcode == code 或 code1 或 code2 或 code3 不能在任何地方工作?

Why wouldn't gcode == code or code1 or code2 or code3 work anywhere?

这是计算机科学的作业class。有没有办法让它工作,或者更有效地做到这一点?该程序的目标是让用户猜测所有四个数字(不必按顺序),告诉他们是否正确并显示尝试次数。赋值要求至少包含一个带参数的函数和一个列表。

import random

# Sets tries and isCorrect to 0- not broken
tries = 0
isCorrect = 0

# Generates 4 random numbers- not broken
for i in range(4):
    code = random.randint(1, 9)
    code1 = random.randint(1, 9)
    code2 = random.randint(1, 9)
    code3 = random.randint(1, 9)
    
# Prints the random numbers for now- not broken
print(code)
print(code1)
print(code2)
print(code3)
 
# Guess = If the guess variables are equal to the code it tells you you're right
def guess(a, b, c, d):
    
    global isCorrect
    
    if a == code or code1 or code2 or code3 and b == code or code1 or code2 or code3 and c == code or code1 or code2 or code3 and d == code or code1 or code2 or code3:
        print("You got it correct!")
    else:
        print("You got it wrong.") 
        return(a, b, c, d)


# While isCorrect is still 0 it prompts you to guess again, if it's correct it sets isCorrect to one
while isCorrect == 0:
    gcode = int(input("Input your first guess: "))
    gcode1 = int(input("Input your second guess: "))
    gcode2 = int(input("Input your third guess: "))
    gcode3 = int(input("Input your fourth guess: "))
    guess(gcode, gcode1, gcode2, gcode3)
    tries = tries + 1
    #print("You got it wrong.")
    if gcode == code or code1 or code2 or code3 and gcode1 == code or code1 or code2 or code3 and gcode2 == code or code1 or code2 or code3 and gcode3 == code or code1 or code2 or code3:
        isCorrect = 1

# Makes it so the plural matches amount of tries
if tries != 1:
    print("It took you", tries, "tries.")
else:
    print("It took you", tries, "try.")

你的if语句是错误的。这不是在 python 中使用 or 的方式。 这是正确的方法:

if gcode == code or gcode == code1 or gcode == code2 or gcode == code3 and ...

按照你写的方式,它以 code1(或 code2、3、..)作为表达式并检查它们是否为真。这不是你想要的。

当然,这是一种混乱的编码方式。一个更好的方法是将代码放在一个列表中,将 gcode 放在另一个列表中,然后在 for 循环中检查它们。

我想你必须马上交作业所以我的帮助:-)我还添加了列表的使用。

这是工作代码,但请仔细检查。

import random

# Sets tries and isCorrect to 0- not broken
tries = 0
isFalse = True # use boolean variable to make it more clear - 0 would be an integer


# Create a list in which you store the 4 random values
# Initialize the empty list, so it is defined in the for loop
random_values_list = []
# Generates 4 random numbers- not broken

for i in range(4):
    # append 4 times a random value to the list
    random_values_list.append(random.randint(1, 9))

# sort the list here is important, later we check the sorted input against this list
random_values_list.sort()
# Prints the random numbers
print(random_values_list)

 
# Guess = If the guess variables are equal to the code it tells you you're right
def check_guess(input_guesses_list, random_values_list):
    
    print(input_guesses_list)
    print(random_values_list)
    
    # now you can simply check if the lists are the same
    if input_guesses_list == random_values_list:
        print("You got it correct!")
        # return false to break the while loop, because the user got it right
        return False
    else:
        print("You got it wrong.")
        # return true to keep the while loop alive
        return True

# Save the inputs also in a list
input_guesses_list = []

# While isCorrect is still 0 it prompts you to guess again, if it's correct it sets isCorrect to one
while isFalse:
    input_guesses_list.append(int(input("Input your first guess: ")))
    input_guesses_list.append(int(input("Input your second guess: ")))
    input_guesses_list.append(int(input("Input your third guess: ")))
    input_guesses_list.append(int(input("Input your fourth guess: ")))
    # also sort this list
    input_guesses_list.sort()
    isFalse = check_guess(input_guesses_list, random_values_list)
    tries += 1
    # important: reset the list with the guesses!
    input_guesses_list = []
    

# Makes it so the plural matches amount of tries
if tries != 1:
    print("It took you", tries, "tries.")
else:
    print("It took you", tries, "try.")