NameError: имя 'd' не определено в param_check - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь решить следующие наборы задач кодирования, но генерирую одну ошибку за другой. переменная c_false

Вызвать функцию, чтобы она вернула True, и присвоить ее переменной c_true Вызвать функцию, чтобы значение fruit было присвоено переменной fruit_ans Вызовите функцию с использованием первого и третьего параметра, чтобы значение 8 было присвоено переменной param_check
c_false = checkingIfIn('wwww',direction=True)       
c_true = checkingIfIn('bbbbb',direction=False)
fruit_ans = checkingIfIn('fruit',True)
param_check = checkingIfIn('apple',True,(d(['pear']['watermelon'])))

print(c_false)
print(c_true)
print(fruit_ans)
print(param_check)

Ответы [ 2 ]

0 голосов
/ 19 июня 2020
def checkingIfIn(a, direction = True, d= {'apple': 2, 'pear': 1, 'fruit': 19,     'orange': 5, 'banana': 3, 'grapes': 2, 'watermelon': 7}):
    if direction == True:
        if a in d:
            return d[a]
        else:
            return False
    else:
        if a not in d:
            return True
        else:
            return d[a]
  • Вызвать функцию, чтобы она возвращала False, и назначить этот вызов функции переменной c_false

  • Вызвать функцию, чтобы она возвращала True и присвоить его переменной c_true

  • Вызвать функцию, чтобы значение fruit было присвоено переменной fruit_ans

  • Вызов функции с помощью первый и третий параметр, чтобы значение 8 было присвоено переменной param_check


c_false = checkingIfIn('wwww',direction=True)       

c_true = checkingIfIn('bbbbb',direction=False)

fruit_ans = checkingIfIn('fruit',True)

param_check = checkingIfIn('apple',True,('pear')+('watermelon'))

print(c_false)
print(c_true)
print(fruit_ans)
print(param_check)
0 голосов
/ 19 июня 2020

Вы смешиваете разные вещи.

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

Это явно не то, что вы пытаетесь получить, но, опять же, ваш код и ваши комментарии не совсем просты для понимания

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...