Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 13564|Отговор: 1

[Комуникация] 17 често срещани грешки при изпълнение на Python за начинаещи

[Копирай линк]
Публикувано в 5.12.2015 г. 13:08:56 ч. | | |

Когато учите Python, може да бъде малко по-сложно да разберете значението на съобщенията за грешки в Python. Ето списък с някои често срещани грешки по време на изпълнение, които причиняват срив на вашата програма.


1) Забравих да добавя :( в края на if, elif, else, for, while, class, def def.

        Грешката ще се появи в код по следния начин:

ако спам == 42
    print("Здравейте!")

2) Use = вместо == (което води до "SyntaxError: невалиден синтаксис")

        = е операторът за присвояване и == е равна на операцията за сравнение.Грешката се появява в код по следния начин:

ако спам = 42:
    print("Здравейте!")

3) Неправилна употреба на вдлъбнатина. (В резултат на "IndentationError:unexpected indent", "IndentationError:unindent не съвпада с никакво външно ниво на отстъпление" и "IndentationError: очаквано отстъпен блок")

        Запомнете, че отстъпът се използва само след оператори, завършващи с: след което форматът на отстъп трябва да се върне към предишния формат на отстъпване. Грешката се появява в код по следния начин:

print("Здравейте!")
    print ("Здравейте!")
Или:
ако спам == 42:
    print("Здравейте!")
  print ("Здравейте!")
Или:
ако спам == 42:
print("Здравейте!")

4) Забравяне да се извика len() в for loop оператора (което води до "TypeError: "list" обект не може да се интерпретира като цяло число)

Обикновено искаш да итерираш списък или елемент от низ през индекс, което изисква извикване на функцията range(). Не забравяйте да върнете стойността на len, вместо да връщате този списък.

        Грешката се появява в код по следния начин:

spam = ["котка", "куче", "мишка"]
За I в обхвата (спам):
    print(spam)

5) Опитайте да промените стойността на низа (което води до "TypeError: обектът "str" не поддържа присвояване на елементи)

        String е неизменим тип данни и грешката се появява в код по следния начин:

spam = "Имам домашна котка."
spam[13] = "r"
print(spam)

И всъщност искате да направите това:

spam = "Имам домашна котка."
spam = spam[:13] + "r" + spam[14:]
print(spam)

6) Опит за конкатенация на стойности, които не са низове, със низове (което води до "TypeError: Can't convert "int" обект в str имплицитно)

        Грешката се появява в код по следния начин:

numEggs = 12
print ("Имам " + numEggs + " яйца.")

И всъщност искате да направите това:

numEggs = 12
print ("Имам " + str(numEggs) + "яйца.")
Или:
numEggs = 12
print ("Имам %s яйца." % (numEggs))

7) Забравяне на кавички в началото и края на низа (което води до "Синтаксисна грешка: EOL при сканиране на литерал на низа")

        Грешката се появява в код по следния начин:

print(Здравейте!")
Или:
print("Здравейте!")
Или:
myName = "Ал"
print("Моето име е " + моето име + . Как си?")

8) Неправилно изписване на имена на променливи или функции (което води до "NameError: name "fooba" не е дефинирано")

        Грешката се появява в код по следния начин:

фубар = "Ал"
print ("Казвам се " + fooba)
Или:
Спам = Руонд(4.2)
Или:
спам = Рунд(4.2)

9) Неправилно изписване на имената на методите (което води до "AttributeError: обектът "str" няма атрибут "lowerr")

        Грешката се появява в код по следния начин:

spam = "ТОВА Е С МАЛКИ БУКВИ."
spam = spam.lowerr()

10) Препратките надвишават максималния индекс на списъка (което води до "IndexError: list index out of range")

        Грешката се появява в код по следния начин:

spam = ["котка", "куче", "мишка"]
print(spam[6])

11) Използване на речникова ключова стойност, която не съществува (което води до "KeyError: 'spam'")

        Грешката се появява в код по следния начин:

spam = {"cat": "Зофи", "dog": "Basil", "mouse": "Whiskers"}
print("Името на моята домашна зебра е " + spam["zebra"])

12) Опит за използване на Python ключова дума като име на променлива (което води до "SyntaxError: невалиден синтаксис")

        Python ключът не може да се използва като име на променлива, грешката се появява в код по следния начин:

клас = "алгебра"

Ключовите думи на Python3 са: and, as, assert, break, class, continue, def, del, elif, else, except, False, накрая, for, from, global, if, import, in, is, lambda, None, nonlocal, not, or, pass, raise, return, Вярно, опитай, докато с, отстъпи


13) Използване на оператори с добавена стойност в дефинирана нова променлива (което води до "NameError: name "foobar" не е дефинирано)

        Не използвайте 0 или null низове като начални стойности при деклариране на променливи, така че спам в изречение += 1 с оператор за самоувеличаване да е равно на spam = spam + 1, което означава, че спам трябва да посочи валидна начална стойност.

        Грешката се появява в код по следния начин:

спам = 0
спам += 42
яйца += 42

14) Използвайте локални променливи във функциите преди дефиниране на локални променливи (в този случай има глобална променлива със същото име като локалната променлива) (което води до "UnboundLocalError: локална променлива "foobar", цитирана преди присвояването)

        Сложно е да се използва локална променлива във функция със същото име като глобална променлива, а правилата за използване са: ако нещо е дефинирано във функция, ако се използва само във функцията, то е локално, и обратно.

        Това означава, че не можеш да го използваш във функция като глобална променлива преди да я дефинираш.

        Грешката се появява в код по следния начин:

someVar = 42
def myFunction():
    print(someVar)
    someVar = 100
myFunction()

15) Опит за създаване на целочислен списък с range() (което води до "TypeError: обектът "range" не поддържа присвояване на елементи)

        Понякога искаш да получиш подредени цели числа, така че range() изглежда добър начин да генерираш този списък. Въпреки това, трябва да помните, че range() връща "обект в обхвата", а не действителната стойност на списъка.

        Грешката се появява в код по следния начин:

спам = обхват(10)
спам[4] = -1

Може би това е, което искаш да направиш:

spam = списък(обхват(10))
спам[4] = -1
(Забележка: spam = range(10) работи в Python 2, защото в Python 2 range() връща стойност на списъка, но в Python 3 горната грешка се генерира)

16) Хубаво в ++ или -- оператор за самоувеличаване. (В резултат на "SyntaxError: невалиден синтаксис")

        Ако сте свикнали с други езици като C++, Java, PHP и др., може да опитате да използвате ++ или -- увеличаване и изваждане на променлива. В Python няма такъв оператор.

        Грешката се появява в код по следния начин:

спам = 1
spam++

Може би това е, което искаш да направиш:

спам = 1
спам += 1

17) Забравих да добавя параметъра на себе си към първия аргумент на метода (което води до "TypeError: myMethod() не приема аргументи (1 е дадено)")

        Грешката се появява в код по следния начин:

клас Foo():
    определено myMethod():
        print("Здравейте!")
a = Foo()
a.myMethod()





Предишен:WiFi софтуер за безжично разбиване + урок (капка вода)
Следващ:【iOS Серия разработка, издаден през лятото】IOS проект
Публикувано в 5.12.2015 г. 13:34:16 ч. |
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com