Форум сайта python.su
такой вопрос. можно ли сделать так чтобы если ты запускаешь фаил .ру чтобы он сразу не закрывался если там ошибка, а показывал ее. может быть ,конечно, я прошу не возможного. О_о
Отредактировано (Авг. 9, 2009 11:11:29)
Офлайн
я написал вот это в консоли все работает а в файле нет. почему?
import pickle
file = open('state.txt', 'r')
names = pickle.load(file)
numbers = pickle.load(file)
file.close()
while(1):
n =raw_input('enter the name: ')
i = 0
for i in range(len(names)):
if n==names[i]:
print numbers[i]
break
elif i == len(names) - 1:
print 'Oops. Cant finded this name.'
break
i+=1
break
Офлайн
breeveА как ты запускаешь файл?
я написал вот это в консоли все работает а в файле нет. почему?
Офлайн
pentoу меня стоит прога называется notepad++ я там пишу код. сохраняю в формате ру. и далее просто открываю созданный фаил.breeveА как ты запускаешь файл?
я написал вот это в консоли все работает а в файле нет. почему?
Офлайн
напиши в конце программы raw_input('end') и окно консоли не будет исчезать
Офлайн
dimabestвы наверное не понимаете в чем проблема. я написал какую-нибудь прогу. записал ее в отдельный фаил.
напиши в конце программы raw_input('end') и окно консоли не будет исчезать
Офлайн
при открытии или при запуске?
если при запуске то запускай скрипт через cmd или через FAR таким образом:
python myscript.py
тогда stdout и stderr будет выводится в ту консоль из которой ты его запускаешь.
а вообще стандартный IDLE мне очень даже нравится…
можно еще так сделать:
try:
import pickle
file = open('state.txt', 'r')
names = pickle.load(file)
numbers = pickle.load(file)
file.close()
while(1):
n =raw_input('enter the name: ')
i = 0
for i in range(len(names)):
if n==names[i]:
print numbers[i]
break
elif i == len(names) - 1:
print 'Oops. Cant finded this name.'
break
i+=1
break
except Exception, info:
print info
raw_input()
Отредактировано (Авг. 10, 2009 11:32:16)
Офлайн
goblin_maksпопробовал так вставить except не вышло. а насчет cmd все получилось спасибо!
при открытии или при запуске?
если при запуске то запускай скрипт через cmd или через FAR таким образом:
python myscript.py
тогда stdout и stderr будет выводится в ту консоль из которой ты его запускаешь.
а вообще стандартный IDLE мне очень даже нравится…
можно еще так сделать:try:
import pickle
file = open('state.txt', 'r')
names = pickle.load(file)
numbers = pickle.load(file)
file.close()
while(1):
n =raw_input('enter the name: ')
i = 0
for i in range(len(names)):
if n==names[i]:
print numbers[i]
break
elif i == len(names) - 1:
print 'Oops. Cant finded this name.'
break
i+=1
break
except Exception, info:
print info
raw_input()
Офлайн
Теперь выдает ошибку:
Cmdна 14 строке нету брейка.
D:\Python25>Python tel_kniga.py
File “tel_kniga.py”, line 14
break
SyntaxError: ‘break’ outside loop
import pickle
def addNew():
names = ['kolya','valera','petya']
numbers = ['123','456','789']
while(1):
temp = raw_input("Enter the new name.\n")
names.append(temp)
temp = raw_input("Enter the number.\n")
numbers.append(temp)
file = open('state.txt', 'w')
pickle.dump(names, file)
pickle.dump(numbers, file)
file.close()
def findByName():
file = open('state.txt', 'r')
names = pickle.load(file)
numbers = pickle.load(file)
file.close()
while(1):
n = raw_input('enter the name: ')
i = 0
for i in range(len(names)):
if n == names[i]:
print numbers[i]
break
elif i == len(names) - 1:
print 'Oops. Cant finded this name.'
break
i+=1
print "This is a telephone book.\nPress 1 to find by name.\n"
print "Press 2 to add new contacts.\nPress 3 to exit."
while(1):
choice = raw_input()
if choice == '1':
findByName()
elif choice == '2':
addNew()
elif choice == '3':
exit()
else:
print "error enter."
raw_input("Press any key to exit")
Офлайн
настрой свой ноутпад++ корректно (в настройках поставь заменять таб на 4 пробела), поставь корректно отступы и все будет работать.
ты пишешь в винде..запускай скрипты из стандартного IDLE через F5…тогда ошибки будут вываливатся в т.н. интерактивную консоль..и не надо будет переключаться туда сюда…IDLE люди писали не по приколу…а для того что бы удобней было работать..
import pickle
def addNew():
names = ['kolya','valera','petya']
numbers = ['123','456','789']
temp = raw_input("Enter the new name.\n")
names.append(temp)
temp = raw_input("Enter the number.\n")
numbers.append(temp)
file = open('state.txt', 'w')
pickle.dump(names, file)
pickle.dump(numbers, file)
file.close()
def findByName():
file = open('state.txt', 'r')
names = pickle.load(file)
numbers = pickle.load(file)
file.close()
while(1):
n = raw_input('enter the name: ')
i = 0
for i in range(len(names)):
if n == names[i]:
print numbers[i]
break
elif i == len(names) - 1:
print 'Oops. Cant finded this name.'
break
i+=1
print "This is a telephone book.\nPress 1 to find by name.\n"
print "Press 2 to add new contacts.\nPress 3 to exit."
while(1):
choice = raw_input()
if choice == '1':
findByName()
elif choice == '2':
addNew()
elif choice == '3':
exit()
else:
print "error enter."
raw_input("Press any key to exit")
Отредактировано (Авг. 10, 2009 23:31:47)
Офлайн