[python 기초] 12 - 의외의 처리와 디버깅
$ ./user_input_int.py
Enter an integer number: abc
Traceback (most recent call last):
File "./user_input_int.py", line 6, in
usr_num = int(usr_ip)
ValueError: invalid literal for int() with base 10: 'abc'
try-except
구조를 통해 실현#!/usr/bin/python3
while True:
try:
usr_num = int(input("Enter an integer number: "))
break
except ValueError:
print("Not an integer, try again")
print("Square of entered number is: {}".format(usr_num * usr_num))
except
는 특정한 오류에 사용할 수 있다(본 예는 ValueError
$ ./user_input_exception.py
Enter an integer number: a
Not an integer, try again
Enter an integer number: 1.2
Not an integer, try again
Enter an integer number: 3
Square of entered number is: 9
한층 더 읽다
$ python3 -m py_compile syntax_error.py
File "syntax_error.py", line 3
print "Have a nice day"
^
SyntaxError: Missing parentheses in call to 'print'
if for with
등 부족한 부분:
과 print
문장 부족한 부분()
이 매우 유용하다pdb
cmdline
의 또 다른 용법print
만능대법에 비해 pdb는 더 많은 디버깅 프로그램의 기능 특성을 가지고 단점$ python3 -m pdb if_elif_else.py
> /home/learnbyexample/python_programs/if_elif_else.py(3)()
-> num = 45
(Pdb) p num
*** NameError: name 'num' is not defined
(Pdb) n
> /home/learnbyexample/python_programs/if_elif_else.py(6)()
-> if num > 25:
(Pdb) p num
45
(Pdb) l
1 #!/usr/bin/python3
2
3 num = 45
4
5 # only if
6 -> if num > 25:
7 print("Hurray! {} is greater than 25".format(num))
8
9 # if-else
10 if num % 2 == 0:
11 print("{} is an even number".format(num))
(Pdb) q
l
디버거가 있는 줄 문장의 코드를 인쇄하여 디버그의 진전을 시각화하는 데 사용s
현재 줄을 실행하고 함수 호출에 들어갑니다n
현재 줄을 실행하고 함수 호출을 단일 실행 절차로 간주c
계속 실행하고 다음 단점 알아p variable
인쇄 변수 값h
명령 목록h c
수령c
명령 도움말q
디버거 종료import
에 프로그램을 직접 가져올 수 있음if __name__ == "__main__":
구축main
함수 내부에 넣고 if __name__ == "__main__":
구조에서 호출main()
__name__
와 __main__
접두어와 접두어는 모두 두 개의 밑줄#!/usr/bin/python3
# ----- -----
def greeting():
print("-----------------------------")
print(" Hello World ")
print("-----------------------------")
# ----- -----
def sum_two_numbers(num1, num2):
sum = num1 + num2
print("{} + {} = {}".format(num1, num2, sum))
# ----- -----
def num_square(num):
return num * num
# ----- main -----
def main():
greeting()
sum_two_numbers(3, 4)
my_num = 3
print(num_square(2))
print(num_square(my_num))
if __name__ == "__main__":
main()
$ ./functions_main.py
-----------------------------
Hello World
-----------------------------
3 + 4 = 7
4
9
>>> import functions_main
>>> functions_main.greeting()
-----------------------------
Hello World
-----------------------------
>>> functions_main.num_square()
Traceback (most recent call last):
File "", line 1, in
TypeError: num_square() missing 1 required positional argument: 'num'
>>> functions_main.num_square(5)
25
>>> functions_main.main()
-----------------------------
Hello World
-----------------------------
3 + 4 = 7
4
9
한층 더 읽다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.