2016-07-26 2 views
0

Я создал функцию RC (n), которая при любом n меняет числа n в соответствии с правилом. Функция следующая:Невозможно выполнить функцию с помощью python

def cfr(n): 
    return len(str(n))-1 


def n_cfr(k,n): 
    J=str(k) 
    if "." in J: 
     J2=J.replace(".", "") 
     return J2[n-1] 
    else: 
     return J[n] 

def RC(n): 
    if "." not in str(n): 
     return n+1 
    sum=0 
    val=0 
    for a in range(1,cfr(n)+1): 
     O=(int(n_cfr(n,a)))*10**(-a+1) 
     if int(n_cfr(n,a))==9: 
      val=0 
     else: 
      val=O+10**(-a+1) 
     sum=sum+val 
    return sum  

Я хотел бы нарисовать эту функцию для нецелых значений n. Друг дал мне этот код, который он использовал в других функциях, но это, кажется, не работает для меня:

def draw(f,a,b,res): 
import numpy as np 
import matplotlib.pyplot as plt 
    x=[a+(b-a)*i/res for i in range(0,res)] 
    y=[f(elm) for elm in x] 
    plt.plot(np.asarray(x), np.asarray(y)) 
    plt.show() 

Я не знаком с построения функций с помощью питона так может кто-нибудь дать мне некоторую помощь? Заранее спасибо

ответ

1

Линия в функции должны быть x = list(range(a, b, res)) первые два аргумента range являются start и stop. Вот лучший вариант розыгрыша:

def draw(f, a, b, res): 
    import numpy as np 
    import matplotlib.pyplot as plt 
    x = list(range(a, b, res)) 
    plt.plot(x, map(f, x)) 
    plt.show() 
+0

Тем не менее, когда я входной код для функции (которая называется RC) и затем рисуем (RC, 1,10,10) все, что приходит белая графика ничто на нем, но когда я делаю рисование (RC, 1,100,10), что получается, это прямая линия, как это работает только для целых положительных чисел. – Peterix

+0

Потому что, когда вы делаете от 1 до 10 с разрешением 10, ничего не возвращается (поскольку 'b - a ekipmanager

Смежные вопросы