Экспоненциальная функция возврата задачи-Python - PullRequest
0 голосов
/ 27 октября 2018

Я работаю над этой проблемой -

 modify powerOfTwo() to meet the conditions below
#    - accept 1 integer parameter; an exponent
#    - print to the screen 2 raised to the exponent argument, example:
#    --- "2 to the power of 2 is 4"
#    - also return the result (for the example, you would return 4)

мой код выглядит следующим образом:

def powerOfTwo(exp):
    x = int(input("please enter a number for what power of 2: "))
    e = (2**x)
    print("2 to the power of",x, "is: ",e,)



    return (2**x)

При запуске программы код моего профессора проверяет мой код на точность, и я считаю, что он проверяет его неправильно. Программа возвращает следующее, включая мой собственный ввод "5":

please enter a number for what power of 2: 5
2 to the power of 5 is:  32
+3 function call w/ correct # of params is present
+2 return value is correct type: <class 'int'>
-- return value is incorrect
Expected:  64
Returned:  32

Ожидаемое значение 64, очевидно, неверно. Что-то не так с моим кодом или с кодом профессора, который проверяет мою проблему? (включено ниже):

q2s = 0
e = random.randint(3,11)
try:
    print("\nq2-1:  Checking powerOfTwo(" + str(e) + ")")
    p2 = powerOfTwo(e)
    print("+3 function call w/ correct # of params is present")
    score += 3
    q2s += 3
    if isinstance(p2, int):
        print("+2 return value is correct type:",type(p2))
        score += 2
        q2s += 2
        if p2 == (2 ** e):
            print("+2 return value is correct:",p2)
            score += 2
            q2s += 2
        else:
            print("-- return value is incorrect")
            print("Expected: ",2 ** e)
            print("Returned: ",p2)

        e = random.randint(12,22)
        print("\nq2-2:  Checking powerOfTwo(" + str(e) + ")")
        p2 = powerOfTwo(e)
        if p2 == (2**e):
            print("+2 return value is correct:",p2)
            score += 2
            q2s += 2
        else:
            print("-- return value is incorrect")
            print("Expected: ",2**e)
            print("Returned: ",p2)
    else:
        print("-- return value is incorrect type:",type(p2))
except:
    print("**Something is wrong with powerOfTwo()")
    printErr()

Ответы [ 2 ]

0 голосов
/ 27 октября 2018

Код вашего профессора генерирует случайное число и помещает его в функцию. Чтобы убедиться, что функция работает правильно, вам просто нужно ввести сгенерированное случайное число.

Кроме того, кажется, что вы не инициализировали счет в том, что вы предоставили:

q2s = 0
e = random.randint(3,11)
score=0
0 голосов
/ 27 октября 2018

Программа вашего профессора генерирует случайное число, которое вводится в вашу функцию.Таким образом, вы не можете использовать «ввод», чтобы ввести свой собственный номер.Вы должны использовать значение «exp».

...