Вы смешиваете разные вещи.
1) Во-первых, метод не d.keys [a], это d.keys ()
if a in d.keys()
2) В в другом случае вы также непоследовательны, потому что вы пишете
if a not in d
, когда должно быть
if a not in d.keys()
3) для fruit_ans, который вы назначаете d = 'apple'. Теперь d - это строка, а не словарь, поэтому, конечно, это не сработает (у строки нет ключей)
На самом деле вы делаете что-то бесполезное, даже передав что-то в d. Вы должны передать только
checkingIfIn('apple',True)
И это проверит, содержится ли ключевое яблоко в вашем словаре d. В противном случае вам нужно передать правильный словарь в d
checkingIfIn('apple',True, d={'this':1,'is':2,'aProper':3,'dictionary':4})
4) Вы назначаете целое число для d для param_check. Это та же ошибка, которую вы сделали в пункте 3, передавая что-то, не являющееся словарем, в d
5) Трудно понять ваши комментарии для каждого вызова функции. Непонятно, чего вы вообще хотите достичь с помощью этого метода, но он явно нуждается в доработке
РЕДАКТИРОВАТЬ:
Это то, что вы получите, правильно используя свой метод
if __name__ == "__main__":
#Call the function so that it returns False and
#assign that function call to the variable c_false
c_false = checkingIfIn('apple',direction=False)
#Call the fucntion so that it returns True and assign it to the
#variable c_true
c_true = checkingIfIn('apple',direction=True)
#Call the function so that the value of fruit is assigned to the
#variable fruit_ans
fruit_ans = checkingIfIn('apple',True,d={'apple':1})
#Call the function using the first and third parameter so that the
#value 8 is assigned to the variable param_check
param_check = checkingIfIn('apple',direction=True)
print(c_false)
print(c_true)
print(fruit_ans)
print(param_check)
Результат выглядит следующим образом:
2
apple
apple
apple
Это явно не то, что вы пытаетесь получить, но, опять же, ваш код и ваши комментарии не совсем просты для понимания