Уведомления

Группа в Telegram: @pythonsu

#1 Май 30, 2010 16:34:57

Avatarmov
От:
Зарегистрирован: 2010-03-17
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите найти ошибку в коде

Доброго времени суток!
Есть у меня такой простенький код, пытаюсь написать свою простейшую командную строку, по типу, как в линуксе.

# All commands.
def help ():
print "help"

# Call commands.
def call_command (command):
if command[0] == "help":
help ()
else:
print "Error: unknown command!"

def commands_input ():
while 1:
command = raw_input ('> ').split ()
call_command (command)

def start ():
commands_input ()

# ...
start ()
Если что, мог ошибиться, потому что поудалял некоторые ненужные части.
Проблема в том, что некоторые команды у меня с одним словом, некоторые с двумя. Кроме того, можно же не вводить ничего и просто нажать enter. Но никак не могу разобраться со split (). Если я просто нажму enter, то он ругается, что нету первого элемента списка. При этом, если я ввожу команду, которая требует второе слово (аргумент короче говоря), без этого второго слова, он опять ругается: нету второго элемента списка. Помогите пожалуйста!



Отредактировано (Май 30, 2010 16:36:54)

Офлайн

#2 Май 30, 2010 18:21:20

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Помогите найти ошибку в коде

везде где хочешь обратиться к command тебе нужно проверить существование этого элемента под номерном X, например так: if len(command)>X: doCheck()…

Офлайн

#3 Июнь 5, 2010 02:42:49

ozrmatn
От:
Зарегистрирован: 2010-06-05
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите найти ошибку в коде

from Tkinter import *
from math import *
def fx(x0,y0):
h=(xk-x0)/n
return 1/(2*x-y**2)
for i in range (0,n):
y1=y0+(h/2)*(fx(x0,y0)+fx(x0+h,y0+h*fx(x0,y0)))
x1=x0+h
x0=x1
y0=y1
return y1
def calculate_y1():
x0 = float(x0_entry.get())
y0 = float(y0_entry.get())
xk = float(xk_entry.get())
n = float(n_entry.get())
try:
y1 = “%11.3f” % fx(x0,y0)
except:
y1 = “?”
y1_label.configure(text=y1)
root = Tk()
root.title(“du”)
frame = Frame(root)
frame.pack()
x0_entry = Entry(frame, width=10)
x0_entry.grid(row=1, column=0)
x0_lebel = Label(frame, text=“x0”)
x0_lebel.grid(row=0, column=0)
y0_entry = Entry(frame, width=10)
y0_entry.grid(row=1, column=1)
y0_lebel = Label(frame, text=“y0”)
y0_lebel.grid(row=0, column=1)
xk_entry = Entry(frame, width=10)
xk_entry.grid(row=1, column=2)
xk_lebel = Label(frame, text=“xk”)
xk_lebel.grid(row=0, column=2)
n_entry = Entry(frame, width=10)
n_entry.grid(row=1, column=3)
n_lebel = Label(frame, text=“n”)
n_lebel.grid(row=0, column=3)
y1_label = Label(frame, text=“?”)
y1_label.grid(row=1, column=5)
eval_button = Button(frame, text=“Calculate”, width=10,
command=calculate_y1)
eval_button.grid(row=2, column=0)
exit_button = Button(frame, text=“Exit”, width=10,
command=root.destroy)
exit_button.grid(row=2, column=1)
root.mainloop()



уже весь перемучился не знаю почему результат не выводится (
тут требуется дифур решитьпо методу эйлера



Отредактировано (Июнь 5, 2010 02:43:44)

Офлайн

#4 Июнь 5, 2010 07:26:26

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Помогите найти ошибку в коде

те нужно y1_label сделать глобальной, её из ф-ии не видно ( global y1_label )

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version