Làm thế nào tôi có thể có Python di chuyển lên đỉnh của câu lệnh IF nếu không có điều kiện nào được thỏa mãn chính xác.
Tôi có một câu lệnh cơ bản nếu/khác như thế này:
print "pick a number, 1 or 2"
a = int[raw_input["> "]
if a == 1:
print "this"
if a == 2:
print "that"
else:
print "you have made an invalid choice, try again."
Điều tôi muốn là nhắc nhở người dùng đưa ra lựa chọn khác cho câu này nếu câu không phải khởi động lại toàn bộ chương trình, nhưng tôi rất mới đối với Python và tôi gặp khó khăn khi tìm câu trả lời trực tuyến ở bất cứ đâu.
chết người
1.20814 Huy hiệu bạc24 Huy hiệu đồng14 silver badges24 bronze badges
Hỏi ngày 10 tháng 10 năm 2012 lúc 21:34Oct 10, 2012 at 21:34
wondergoat77wondergoat77wondergoat77
1.7459 huy hiệu vàng31 Huy hiệu bạc58 Huy hiệu đồng9 gold badges31 silver badges58 bronze badges
3
Một cách khá phổ biến để làm điều này là sử dụng vòng lặp
>>> # Measure some strings: ... words = ['cat', 'window', 'defenestrate'] >>> for w in words: ... print[w, len[w]] ... cat 3 window 6 defenestrate 120 sẽ chạy vô thời hạn, với các câu lệnh
>>> # Measure some strings: ... words = ['cat', 'window', 'defenestrate'] >>> for w in words: ... print[w, len[w]] ... cat 3 window 6 defenestrate 121 để thoát vòng lặp khi đầu vào hợp lệ:
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
Ngoài ra còn có một cách hay ở đây để hạn chế số lần thử lại, ví dụ:
print "pick a number, 1 or 2"
for retry in range[5]:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
else:
print "you keep making invalid choices, exiting."
sys.exit[1]
Đã trả lời ngày 10 tháng 10 năm 2012 lúc 21:39Oct 10, 2012 at 21:39
Andrew Clarkandrew ClarkAndrew Clark
197K33 Huy hiệu vàng268 Huy hiệu bạc298 Huy hiệu Đồng33 gold badges268 silver badges298 bronze badges
0
Bạn có thể sử dụng chức năng đệ quy
def chk_number[retry]
if retry==1
print "you have made an invalid choice, try again."
a=int[raw_input["> "]]
if a == 1:
return "this"
if a == 2:
return "that"
else:
return chk_number[1]
print "Pick a number, 1 or 2"
print chk_number[0]
Đã trả lời ngày 10 tháng 10 năm 2012 lúc 21:44Oct 10, 2012 at 21:44
Sử dụng một vòng lặp trong thời gian.
print "pick a number, 1 or 2"
a = None
while a not in [1, 2]:
a = int[raw_input["> "]]
if a == 1:
print "this"
if a == 2:
print "that"
else:
print "you have made an invalid choice, try again."
Đã trả lời ngày 10 tháng 10 năm 2012 lúc 21:36Oct 10, 2012 at 21:36
Jordan Kayejordan KayeJordan Kaye
2.79714 huy hiệu bạc15 huy hiệu đồng14 silver badges15 bronze badges
3
Bên cạnh tuyên bố
>>> # Measure some strings: ... words = ['cat', 'window', 'defenestrate'] >>> for w in words: ... print[w, len[w]] ... cat 3 window 6 defenestrate 122 vừa được giới thiệu, Python sử dụng các câu lệnh điều khiển dòng chảy thông thường được biết từ các ngôn ngữ khác, với một số vòng xoắn.
4.1. >>> # Measure some strings:
... words = ['cat', 'window', 'defenestrate']
>>> for w in words:
... print[w, len[w]]
...
cat 3
window 6
defenestrate 12
3 Báo cáo Jor>>> # Measure some strings:
... words = ['cat', 'window', 'defenestrate']
>>> for w in words:
... print[w, len[w]]
...
cat 3
window 6
defenestrate 12
3
Statements¶
Có lẽ loại tuyên bố nổi tiếng nhất là tuyên bố
>>> # Measure some strings: ... words = ['cat', 'window', 'defenestrate'] >>> for w in words: ... print[w, len[w]] ... cat 3 window 6 defenestrate 123. Ví dụ:
>>> x = int[input["Please enter an integer: "]] Please enter an integer: 42 >>> if x >> # Measure some strings: ... words = ['cat', 'window', 'defenestrate'] >>> for w in words: ... print[w, len[w]] ... cat 3 window 6 defenestrate 125, và phần
>>> # Measure some strings: ... words = ['cat', 'window', 'defenestrate'] >>> for w in words: ... print[w, len[w]] ... cat 3 window 6 defenestrate 126 là tùy chọn. Từ khóa ‘
>>> # Measure some strings: ... words = ['cat', 'window', 'defenestrate'] >>> for w in words: ... print[w, len[w]] ... cat 3 window 6 defenestrate 125 là viết tắt của‘ nếu không, và rất hữu ích để tránh vết lõm quá mức. Một trình tự
>>> # Measure some strings: ... words = ['cat', 'window', 'defenestrate'] >>> for w in words: ... print[w, len[w]] ... cat 3 window 6 defenestrate 123 ____ ____65 ____ ____ ____65 là một sự thay thế cho các câu lệnh
# Create a sample collection users = {'Hans': 'active', 'Éléonore': 'inactive', '景太郎': 'active'} # Strategy: Iterate over a copy for user, status in users.copy[].items[]: if status == 'inactive': del users[user] # Strategy: Create a new collection active_users = {} for user, status in users.items[]: if status == 'active': active_users[user] = status1 hoặc
# Create a sample collection users = {'Hans': 'active', 'Éléonore': 'inactive', '景太郎': 'active'} # Strategy: Iterate over a copy for user, status in users.copy[].items[]: if status == 'inactive': del users[user] # Strategy: Create a new collection active_users = {} for user, status in users.items[]: if status == 'active': active_users[user] = status2 được tìm thấy trong các ngôn ngữ khác.
Nếu bạn có thể so sánh cùng một giá trị với một số hằng số hoặc kiểm tra các loại hoặc thuộc tính cụ thể, bạn cũng có thể thấy câu lệnh
# Create a sample collection users = {'Hans': 'active', 'Éléonore': 'inactive', '景太郎': 'active'} # Strategy: Iterate over a copy for user, status in users.copy[].items[]: if status == 'inactive': del users[user] # Strategy: Create a new collection active_users = {} for user, status in users.items[]: if status == 'active': active_users[user] = status3 hữu ích. Để biết thêm chi tiết, hãy xem các câu lệnh khớp.match Statements.
4.2. # Create a sample collection
users = {'Hans': 'active', 'Éléonore': 'inactive', '景太郎': 'active'}
# Strategy: Iterate over a copy
for user, status in users.copy[].items[]:
if status == 'inactive':
del users[user]
# Strategy: Create a new collection
active_users = {}
for user, status in users.items[]:
if status == 'active':
active_users[user] = status
4 Báo cáo Jor# Create a sample collection
users = {'Hans': 'active', 'Éléonore': 'inactive', '景太郎': 'active'}
# Strategy: Iterate over a copy
for user, status in users.copy[].items[]:
if status == 'inactive':
del users[user]
# Strategy: Create a new collection
active_users = {}
for user, status in users.items[]:
if status == 'active':
active_users[user] = status
4 Statements¶
Tuyên bố
# Create a sample collection users = {'Hans': 'active', 'Éléonore': 'inactive', '景太郎': 'active'} # Strategy: Iterate over a copy for user, status in users.copy[].items[]: if status == 'inactive': del users[user] # Strategy: Create a new collection active_users = {} for user, status in users.items[]: if status == 'active': active_users[user] = status4 trong Python khác một chút so với những gì bạn có thể quen trong C hoặc Pascal. Thay vì luôn lặp đi lặp lại về sự tiến triển số học của các số [như trong pascal] hoặc cung cấp cho người dùng khả năng xác định cả bước lặp và điều kiện tạm dừng [như c], câu lệnh
# Create a sample collection users = {'Hans': 'active', 'Éléonore': 'inactive', '景太郎': 'active'} # Strategy: Iterate over a copy for user, status in users.copy[].items[]: if status == 'inactive': del users[user] # Strategy: Create a new collection active_users = {} for user, status in users.items[]: if status == 'active': active_users[user] = status4 của Python lặp lại các mục của bất kỳ chuỗi nào [danh sách hoặc danh sách một chuỗi], theo thứ tự chúng xuất hiện trong chuỗi. Ví dụ [không có ý định chơi chữ]:
>>> # Measure some strings: ... words = ['cat', 'window', 'defenestrate'] >>> for w in words: ... print[w, len[w]] ... cat 3 window 6 defenestrate 12
Mã sửa đổi một bộ sưu tập trong khi lặp lại trên cùng một bộ sưu tập có thể là khó khăn để có được đúng. Thay vào đó, thường là lặp đi về phía trước để lặp qua một bản sao của bộ sưu tập hoặc để tạo một bộ sưu tập mới:
# Create a sample collection users = {'Hans': 'active', 'Éléonore': 'inactive', '景太郎': 'active'} # Strategy: Iterate over a copy for user, status in users.copy[].items[]: if status == 'inactive': del users[user] # Strategy: Create a new collection active_users = {} for user, status in users.items[]: if status == 'active': active_users[user] = status
4.3. Hàm # Create a sample collection
users = {'Hans': 'active', 'Éléonore': 'inactive', '景太郎': 'active'}
# Strategy: Iterate over a copy
for user, status in users.copy[].items[]:
if status == 'inactive':
del users[user]
# Strategy: Create a new collection
active_users = {}
for user, status in users.items[]:
if status == 'active':
active_users[user] = status
7The
# Create a sample collection
users = {'Hans': 'active', 'Éléonore': 'inactive', '景太郎': 'active'}
# Strategy: Iterate over a copy
for user, status in users.copy[].items[]:
if status == 'inactive':
del users[user]
# Strategy: Create a new collection
active_users = {}
for user, status in users.items[]:
if status == 'active':
active_users[user] = status
7 Function¶
Nếu bạn cần lặp lại một chuỗi các số, hàm tích hợp
# Create a sample collection users = {'Hans': 'active', 'Éléonore': 'inactive', '景太郎': 'active'} # Strategy: Iterate over a copy for user, status in users.copy[].items[]: if status == 'inactive': del users[user] # Strategy: Create a new collection active_users = {} for user, status in users.items[]: if status == 'active': active_users[user] = status7 có ích. Nó tạo ra các tiến trình số học:
>>> for i in range[5]: ... print[i] ... 0 1 2 3 4
Điểm cuối đã cho không bao giờ là một phần của chuỗi được tạo ra;
# Create a sample collection users = {'Hans': 'active', 'Éléonore': 'inactive', '景太郎': 'active'} # Strategy: Iterate over a copy for user, status in users.copy[].items[]: if status == 'inactive': del users[user] # Strategy: Create a new collection active_users = {} for user, status in users.items[]: if status == 'active': active_users[user] = status9 tạo ra 10 giá trị, các chỉ số pháp lý cho các mục có chuỗi độ dài 10. Có thể để phạm vi bắt đầu ở một số khác hoặc để chỉ định một mức tăng khác [thậm chí âm; đôi khi điều này được gọi là ‘bước,]:
>>> list[range[5, 10]] [5, 6, 7, 8, 9] >>> list[range[0, 10, 3]] [0, 3, 6, 9] >>> list[range[-10, -100, -30]] [-10, -40, -70]
Để lặp lại các chỉ số của một chuỗi, bạn có thể kết hợp
# Create a sample collection users = {'Hans': 'active', 'Éléonore': 'inactive', '景太郎': 'active'} # Strategy: Iterate over a copy for user, status in users.copy[].items[]: if status == 'inactive': del users[user] # Strategy: Create a new collection active_users = {} for user, status in users.items[]: if status == 'active': active_users[user] = status7 và
>>> for i in range[5]: ... print[i] ... 0 1 2 3 41 như sau:
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
0Tuy nhiên, trong hầu hết các trường hợp như vậy, thuận tiện khi sử dụng hàm
>>> for i in range[5]: ... print[i] ... 0 1 2 3 42, xem các kỹ thuật lặp.Looping Techniques.
Một điều kỳ lạ xảy ra nếu bạn chỉ in một phạm vi:
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
1Theo nhiều cách, đối tượng được trả về bởi
# Create a sample collection users = {'Hans': 'active', 'Éléonore': 'inactive', '景太郎': 'active'} # Strategy: Iterate over a copy for user, status in users.copy[].items[]: if status == 'inactive': del users[user] # Strategy: Create a new collection active_users = {} for user, status in users.items[]: if status == 'active': active_users[user] = status7 hành xử như thể đó là một danh sách, nhưng thực tế nó không phải là. Đó là một đối tượng trả về các mục liên tiếp của chuỗi mong muốn khi bạn lặp lại nó, nhưng nó không thực sự tạo ra danh sách, do đó tiết kiệm không gian.
Chúng tôi nói một đối tượng như vậy là có thể sử dụng được, nghĩa là phù hợp như một mục tiêu cho các chức năng và cấu trúc mong đợi một cái gì đó mà chúng có thể có được các mặt hàng liên tiếp cho đến khi nguồn cung bị cạn kiệt. Chúng ta đã thấy rằng câu lệnh
# Create a sample collection users = {'Hans': 'active', 'Éléonore': 'inactive', '景太郎': 'active'} # Strategy: Iterate over a copy for user, status in users.copy[].items[]: if status == 'inactive': del users[user] # Strategy: Create a new collection active_users = {} for user, status in users.items[]: if status == 'active': active_users[user] = status4 là một cấu trúc như vậy, trong khi một ví dụ về một hàm có thể điều chỉnh được là
>>> for i in range[5]: ... print[i] ... 0 1 2 3 45:iterable, that is, suitable as a target for functions and constructs that expect something from which they can obtain successive items until the supply is exhausted. We have seen that the
# Create a sample collection users = {'Hans': 'active', 'Éléonore': 'inactive', '景太郎': 'active'} # Strategy: Iterate over a copy for user, status in users.copy[].items[]: if status == 'inactive': del users[user] # Strategy: Create a new collection active_users = {} for user, status in users.items[]: if status == 'active': active_users[user] = status4 statement is such a construct, while an example of a function that takes an iterable is
>>> for i in range[5]: ... print[i] ... 0 1 2 3 45:
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
2Sau đó, chúng ta sẽ thấy nhiều chức năng trả về Iterables và lấy Iterables làm đối số. Trong các cấu trúc dữ liệu chương, chúng tôi sẽ thảo luận chi tiết hơn về
>>> for i in range[5]: ... print[i] ... 0 1 2 3 46.Data Structures, we will discuss in more detail about
>>> for i in range[5]: ... print[i] ... 0 1 2 3 46.
4.4. Các câu lệnh >>> for i in range[5]:
... print[i]
...
0
1
2
3
4
7 và >>> for i in range[5]:
... print[i]
...
0
1
2
3
4
8 và các điều khoản >>> # Measure some strings:
... words = ['cat', 'window', 'defenestrate']
>>> for w in words:
... print[w, len[w]]
...
cat 3
window 6
defenestrate 12
6 trên Loops¶>>> for i in range[5]:
... print[i]
...
0
1
2
3
4
7 and >>> for i in range[5]:
... print[i]
...
0
1
2
3
4
8 Statements, and >>> # Measure some strings:
... words = ['cat', 'window', 'defenestrate']
>>> for w in words:
... print[w, len[w]]
...
cat 3
window 6
defenestrate 12
6 Clauses on Loops¶
Tuyên bố
>>> for i in range[5]: ... print[i] ... 0 1 2 3 47, giống như trong C, thoát ra khỏi vòng lặp
# Create a sample collection users = {'Hans': 'active', 'Éléonore': 'inactive', '景太郎': 'active'} # Strategy: Iterate over a copy for user, status in users.copy[].items[]: if status == 'inactive': del users[user] # Strategy: Create a new collection active_users = {} for user, status in users.items[]: if status == 'active': active_users[user] = status4 hoặc
>>> # Measure some strings: ... words = ['cat', 'window', 'defenestrate'] >>> for w in words: ... print[w, len[w]] ... cat 3 window 6 defenestrate 122.
Các câu lệnh Loop có thể có mệnh đề
>>> # Measure some strings: ... words = ['cat', 'window', 'defenestrate'] >>> for w in words: ... print[w, len[w]] ... cat 3 window 6 defenestrate 126; Nó được thực hiện khi vòng lặp chấm dứt thông qua sự kiệt sức của điều đó [với
# Create a sample collection users = {'Hans': 'active', 'Éléonore': 'inactive', '景太郎': 'active'} # Strategy: Iterate over a copy for user, status in users.copy[].items[]: if status == 'inactive': del users[user] # Strategy: Create a new collection active_users = {} for user, status in users.items[]: if status == 'active': active_users[user] = status4] hoặc khi điều kiện trở thành sai [với
>>> # Measure some strings: ... words = ['cat', 'window', 'defenestrate'] >>> for w in words: ... print[w, len[w]] ... cat 3 window 6 defenestrate 122], nhưng không phải khi vòng lặp bị chấm dứt bởi một câu lệnh
>>> for i in range[5]: ... print[i] ... 0 1 2 3 47. Điều này được minh họa bằng vòng lặp sau, tìm kiếm số nguyên tố:
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
3.not the
>>> # Measure some strings: ... words = ['cat', 'window', 'defenestrate'] >>> for w in words: ... print[w, len[w]] ... cat 3 window 6 defenestrate 123 statement.]
Khi được sử dụng với một vòng lặp, mệnh đề
>>> # Measure some strings: ... words = ['cat', 'window', 'defenestrate'] >>> for w in words: ... print[w, len[w]] ... cat 3 window 6 defenestrate 126 có nhiều điểm chung với mệnh đề
>>> # Measure some strings: ... words = ['cat', 'window', 'defenestrate'] >>> for w in words: ... print[w, len[w]] ... cat 3 window 6 defenestrate 126 của câu lệnh
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
02 so với các câu lệnh >>> # Measure some strings: ... words = ['cat', 'window', 'defenestrate'] >>> for w in words: ... print[w, len[w]] ... cat 3 window 6 defenestrate 123 xảy ra. Để biết thêm về tuyên bố và ngoại lệ
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
02, hãy xem các ngoại lệ xử lý.Handling Exceptions.Tuyên bố
>>> for i in range[5]: ... print[i] ... 0 1 2 3 48, cũng mượn từ C, tiếp tục với lần lặp tiếp theo của vòng lặp:
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
44.5. print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
10 Báo cáo Jorprint "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
10
Statements¶
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
Tuyên bố
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
10 không làm gì cả. Nó có thể được sử dụng khi một câu lệnh được yêu cầu về mặt cú pháp nhưng chương trình không yêu cầu hành động. Ví dụ:print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
5Điều này thường được sử dụng để tạo các lớp tối thiểu:
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
6Một nơi khác
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
10 có thể được sử dụng là một người giữ chỗ cho một chức năng hoặc cơ thể có điều kiện khi bạn đang làm việc trên mã mới, cho phép bạn tiếp tục suy nghĩ ở cấp độ trừu tượng hơn. print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
10 âm thầm bị bỏ qua:print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
74.6. # Create a sample collection
users = {'Hans': 'active', 'Éléonore': 'inactive', '景太郎': 'active'}
# Strategy: Iterate over a copy
for user, status in users.copy[].items[]:
if status == 'inactive':
del users[user]
# Strategy: Create a new collection
active_users = {}
for user, status in users.items[]:
if status == 'active':
active_users[user] = status
3 Báo cáo Jor# Create a sample collection
users = {'Hans': 'active', 'Éléonore': 'inactive', '景太郎': 'active'}
# Strategy: Iterate over a copy
for user, status in users.copy[].items[]:
if status == 'inactive':
del users[user]
# Strategy: Create a new collection
active_users = {}
for user, status in users.items[]:
if status == 'active':
active_users[user] = status
3
Statements¶
Một câu lệnh
# Create a sample collection users = {'Hans': 'active', 'Éléonore': 'inactive', '景太郎': 'active'} # Strategy: Iterate over a copy for user, status in users.copy[].items[]: if status == 'inactive': del users[user] # Strategy: Create a new collection active_users = {} for user, status in users.items[]: if status == 'active': active_users[user] = status3 lấy một biểu thức và so sánh giá trị của nó với các mẫu liên tiếp được đưa ra dưới dạng một hoặc nhiều khối trường hợp. Điều này tương tự hời hợt với câu lệnh Switch trong C, Java hoặc JavaScript [và nhiều ngôn ngữ khác], nhưng nó giống với khớp mẫu phù hợp bằng các ngôn ngữ như Rust hoặc Haskell. Chỉ mẫu đầu tiên phù hợp được thực thi và nó cũng có thể trích xuất các thành phần [phần tử trình tự hoặc thuộc tính đối tượng] từ giá trị thành các biến.
Hình thức đơn giản nhất so sánh giá trị chủ đề với một hoặc nhiều chữ:
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
8Lưu ý Khối cuối cùng: Tên biến có thể thay đổi
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
16 hoạt động như một ký tự đại diện và không bao giờ thất bại để phù hợp. Nếu không có trường hợp nào phù hợp, không có chi nhánh nào được thực hiện.Bạn có thể kết hợp một số chữ theo một mẫu bằng cách sử dụng
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
17 [về hoặc hoặc]:print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
9Các mẫu có thể trông giống như các bài tập giải nén và có thể được sử dụng để liên kết các biến:
print "pick a number, 1 or 2"
for retry in range[5]:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
else:
print "you keep making invalid choices, exiting."
sys.exit[1]
0Nghiên cứu một cách cẩn thận! Mẫu đầu tiên có hai chữ, và có thể được coi là một phần mở rộng của mẫu theo nghĩa đen được hiển thị ở trên. Nhưng hai mẫu tiếp theo kết hợp một nghĩa đen và một biến, và biến liên kết một giá trị từ đối tượng [
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
18]. Mẫu thứ tư nắm bắt hai giá trị, làm cho nó tương tự về mặt khái niệm với gán giải nén print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
19.Nếu bạn đang sử dụng các lớp để cấu trúc dữ liệu của mình, bạn có thể sử dụng tên lớp theo sau là danh sách đối số giống như một hàm tạo, nhưng với khả năng nắm bắt các thuộc tính thành các biến:
print "pick a number, 1 or 2"
for retry in range[5]:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
else:
print "you keep making invalid choices, exiting."
sys.exit[1]
1Bạn có thể sử dụng các tham số vị trí với một số lớp tích hợp cung cấp đặt hàng cho các thuộc tính của chúng [ví dụ: DataClasses]. Bạn cũng có thể xác định một vị trí cụ thể cho các thuộc tính trong các mẫu bằng cách đặt thuộc tính đặc biệt
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
20 trong các lớp của bạn. Nếu nó được đặt thành [[X X,print "pick a number, 1 or 2"
for retry in range[5]:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
else:
print "you keep making invalid choices, exiting."
sys.exit[1]
2Một cách được đề xuất để đọc các mẫu là xem chúng như một hình thức mở rộng của những gì bạn sẽ đặt ở bên trái của một bài tập, để hiểu các biến nào sẽ được đặt thành những gì. Chỉ các tên độc lập [như
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
22 ở trên] được gán cho một câu lệnh khớp. Các tên chấm chấm [như print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
24], tên thuộc tính [tên print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
25 và print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
26 ở trên] hoặc tên lớp [được công nhận bởi [[một]] bên cạnh chúng như print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
27 ở trên] không bao giờ được gán.Các mẫu có thể được lồng tùy ý. Ví dụ: nếu chúng ta có một danh sách ngắn các điểm, chúng ta có thể khớp nó như thế này:
print "pick a number, 1 or 2"
for retry in range[5]:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
else:
print "you keep making invalid choices, exiting."
sys.exit[1]
3Chúng ta có thể thêm một điều khoản
>>> # Measure some strings: ... words = ['cat', 'window', 'defenestrate'] >>> for w in words: ... print[w, len[w]] ... cat 3 window 6 defenestrate 123 vào một mẫu, được gọi là một người bảo vệ. Nếu người bảo vệ sai,
# Create a sample collection users = {'Hans': 'active', 'Éléonore': 'inactive', '景太郎': 'active'} # Strategy: Iterate over a copy for user, status in users.copy[].items[]: if status == 'inactive': del users[user] # Strategy: Create a new collection active_users = {} for user, status in users.items[]: if status == 'active': active_users[user] = status3 tiếp tục thử khối trường hợp tiếp theo. Lưu ý rằng việc bắt giá trị xảy ra trước khi người bảo vệ được đánh giá:
print "pick a number, 1 or 2"
for retry in range[5]:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
else:
print "you keep making invalid choices, exiting."
sys.exit[1]
4Một số tính năng chính khác của câu lệnh này:
Giống như giải nén các bài tập, các mẫu Tuple và List có cùng một ý nghĩa và thực sự phù hợp với các chuỗi tùy ý. Một ngoại lệ quan trọng là họ không phù hợp với trình lặp hoặc dây.
Các mẫu trình tự hỗ trợ mở rộng Giải nén:
30 vàprint "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
31 hoạt động tương tự như các bài tập giải nén. Tên sauprint "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
32 cũng có thể làprint "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
16, do đóprint "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
34 khớp với một chuỗi ít nhất hai mục mà không ràng buộc các mục còn lại.print "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
Các mẫu ánh xạ:
35 nắm bắt các giá trịprint "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
36 vàprint "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
37 từ một từ điển. Không giống như các mẫu trình tự, các khóa phụ bị bỏ qua. Một việc giải nén nhưprint "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
38 cũng được hỗ trợ. [Nhưngprint "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
39 sẽ dư thừa, vì vậy nó không được phép.]print "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
Tiểu nhà có thể được ghi lại bằng từ khóa
40:print "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
5print "pick a number, 1 or 2" for retry in range[5]: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again." else: print "you keep making invalid choices, exiting." sys.exit[1]
sẽ nắm bắt phần tử thứ hai của đầu vào là
41 [miễn là đầu vào là một chuỗi hai điểm]print "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
Hầu hết các chữ được so sánh bằng sự bình đẳng, tuy nhiên các singletons
42,print "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
43 vàprint "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
44 được so sánh bằng danh tính.print "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
Các mẫu có thể sử dụng hằng số được đặt tên. Đây phải là những cái tên chấm để ngăn chúng được hiểu là biến bắt giữ:
6print "pick a number, 1 or 2" for retry in range[5]: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again." else: print "you keep making invalid choices, exiting." sys.exit[1]
Để giải thích chi tiết hơn và các ví dụ bổ sung, bạn có thể xem xét PEP 636 được viết theo định dạng hướng dẫn.PEP 636 which is written in a tutorial format.
4.7. Xác định chức năng JoDefining Functions¶
Chúng ta có thể tạo một chức năng viết chuỗi Fibonacci vào một ranh giới tùy ý:
print "pick a number, 1 or 2"
for retry in range[5]:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
else:
print "you keep making invalid choices, exiting."
sys.exit[1]
7Từ khóa
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
45 giới thiệu một định nghĩa chức năng. Nó phải được theo sau bởi tên hàm và danh sách dấu ngoặc đơn của các tham số chính thức. Các câu lệnh tạo thành phần thân của hàm bắt đầu ở dòng tiếp theo và phải được thụt vào.Câu lệnh đầu tiên của cơ thể chức năng có thể tùy ý là một chuỗi theo nghĩa đen; Chuỗi này theo nghĩa đen là chuỗi tài liệu của chức năng, hoặc DocString. . Nó thực hành tốt để bao gồm các tài liệu trong mã mà bạn viết, vì vậy hãy tạo thói quen cho nó.Documentation Strings.] There are tools which use docstrings to automatically produce online or printed documentation, or to let the user interactively browse through code; it’s good practice to include docstrings in code that you write, so make a habit of it.
Việc thực hiện một hàm giới thiệu một bảng biểu tượng mới được sử dụng cho các biến cục bộ của hàm. Chính xác hơn, tất cả các bài tập biến trong một hàm lưu trữ giá trị trong bảng ký hiệu cục bộ; Trong khi các tham chiếu biến đổi đầu tiên trong bảng biểu tượng cục bộ, thì trong các bảng ký hiệu cục bộ của các hàm bao quanh, sau đó trong bảng biểu tượng toàn cầu và cuối cùng trong bảng các tên tích hợp. Do đó, các biến và biến toàn cầu của các hàm bao quanh không thể được gán trực tiếp một giá trị trong một hàm [trừ khi, đối với các biến toàn cầu, được đặt tên trong câu lệnh
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
46, hoặc, đối với các biến số của các hàm, được đặt tên trong câu lệnh print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
47], mặc dù chúng có thể là tham chiếu.Các tham số thực tế [đối số] cho một cuộc gọi hàm được giới thiệu trong bảng ký hiệu cục bộ của hàm được gọi là khi nó được gọi; Do đó, các đối số được truyền bằng cách sử dụng cuộc gọi theo giá trị [trong đó giá trị luôn là tham chiếu đối tượng, không phải là giá trị của đối tượng]. 1 Khi một hàm gọi hàm khác hoặc tự gọi theo cách đệ quy, một bảng ký hiệu cục bộ mới được tạo cho cuộc gọi đó.
Một định nghĩa chức năng liên kết tên hàm với đối tượng hàm trong bảng ký hiệu hiện tại. Trình thông dịch nhận ra đối tượng được chỉ ra bởi tên đó là hàm do người dùng xác định. Các tên khác cũng có thể trỏ đến cùng đối tượng chức năng đó và cũng có thể được sử dụng để truy cập chức năng:
print "pick a number, 1 or 2"
for retry in range[5]:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
else:
print "you keep making invalid choices, exiting."
sys.exit[1]
8Đến từ các ngôn ngữ khác, bạn có thể phản đối rằng
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
48 không phải là một hàm mà là một thủ tục vì nó không trả về một giá trị. Trên thực tế, ngay cả các chức năng mà không có câu lệnh print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
49 trả về một giá trị, mặc dù là một câu nói khá nhàm chán. Giá trị này được gọi là print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
44 [nó là một tên tích hợp]. Viết giá trị print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
44 thường được trình thông dịch triệt tiêu nếu đó là giá trị duy nhất được viết. Bạn có thể thấy nó nếu bạn thực sự muốn sử dụng print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
52:print "pick a number, 1 or 2"
for retry in range[5]:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
else:
print "you keep making invalid choices, exiting."
sys.exit[1]
9Thật đơn giản để viết một hàm trả về danh sách các số của loạt Fibonacci, thay vì in nó:
def chk_number[retry]
if retry==1
print "you have made an invalid choice, try again."
a=int[raw_input["> "]]
if a == 1:
return "this"
if a == 2:
return "that"
else:
return chk_number[1]
print "Pick a number, 1 or 2"
print chk_number[0]
0Ví dụ này, như thường lệ, chứng minh một số tính năng Python mới:
Câu lệnh
49 trả về với giá trị từ một hàm.print "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
49 mà không có đối số biểu thức trả vềprint "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
44. Rơi ra khỏi cuối một hàm cũng trả vềprint "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
44.print "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
Câu lệnh
57 gọi một phương thức của đối tượng danh sáchprint "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
58. Một phương pháp là một hàm ‘thuộc về một đối tượng và được đặt tên làprint "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
59, trong đóprint "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
60 là một số đối tượng [đây có thể là một biểu thức] vàprint "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
61 là tên của một phương thức được xác định bởi loại đối tượng. Các loại khác nhau xác định các phương pháp khác nhau. Các phương pháp của các loại khác nhau có thể có cùng tên mà không gây ra sự mơ hồ. . Nó thêm một yếu tố mới ở cuối danh sách. Trong ví dụ này, nó tương đương vớiprint "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
63, nhưng hiệu quả hơn.Classes] The methodprint "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
62 shown in the example is defined for list objects; it adds a new element at the end of the list. In this example it is equivalent toprint "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
63, but more efficient.print "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
4.8. Thêm về việc xác định chức năng JoMore on Defining Functions¶
Cũng có thể xác định các chức năng với số lượng đối số thay đổi. Có ba hình thức, có thể được kết hợp.
4.8.1. Giá trị đối số mặc định JoDefault Argument Values¶
Biểu mẫu hữu ích nhất là chỉ định giá trị mặc định cho một hoặc nhiều đối số. Điều này tạo ra một hàm có thể được gọi với ít đối số hơn nó được xác định để cho phép. Ví dụ:
def chk_number[retry]
if retry==1
print "you have made an invalid choice, try again."
a=int[raw_input["> "]]
if a == 1:
return "this"
if a == 2:
return "that"
else:
return chk_number[1]
print "Pick a number, 1 or 2"
print chk_number[0]
1Chức năng này có thể được gọi theo nhiều cách:
Chỉ đưa ra đối số bắt buộc:
64print "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
Đưa ra một trong những đối số tùy chọn:
65print "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
hoặc thậm chí đưa ra tất cả các lập luận:
66print "pick a number, 1 or 2" while True: a = int[raw_input["> "] if a == 1: print "this" break if a == 2: print "that" break print "you have made an invalid choice, try again."
Ví dụ này cũng giới thiệu từ khóa
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
67. Điều này kiểm tra xem một chuỗi có chứa một giá trị nhất định hay không.Các giá trị mặc định được đánh giá tại điểm định nghĩa hàm trong phạm vi xác định, do đó
def chk_number[retry]
if retry==1
print "you have made an invalid choice, try again."
a=int[raw_input["> "]]
if a == 1:
return "this"
if a == 2:
return "that"
else:
return chk_number[1]
print "Pick a number, 1 or 2"
print chk_number[0]
2Sẽ in
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
68.Cảnh báo quan trọng: Giá trị mặc định chỉ được đánh giá một lần. Điều này tạo ra sự khác biệt khi mặc định là một đối tượng có thể thay đổi như danh sách, từ điển hoặc phiên bản của hầu hết các lớp. Ví dụ: hàm sau tích lũy các đối số được truyền cho nó trong các cuộc gọi tiếp theo: The default value is evaluated only once. This makes a difference when the default is a mutable object such as a list, dictionary, or instances of most classes. For example, the following function accumulates the arguments passed to it on subsequent calls:
def chk_number[retry]
if retry==1
print "you have made an invalid choice, try again."
a=int[raw_input["> "]]
if a == 1:
return "this"
if a == 2:
return "that"
else:
return chk_number[1]
print "Pick a number, 1 or 2"
print chk_number[0]
3Điều này sẽ in
Nếu bạn không muốn mặc định được chia sẻ giữa các cuộc gọi tiếp theo, bạn có thể viết chức năng như thế này: thay vào đó:
def chk_number[retry]
if retry==1
print "you have made an invalid choice, try again."
a=int[raw_input["> "]]
if a == 1:
return "this"
if a == 2:
return "that"
else:
return chk_number[1]
print "Pick a number, 1 or 2"
print chk_number[0]
44.8.2. Từ khóa đối sốKeyword Arguments¶
Các chức năng cũng có thể được gọi là bằng cách sử dụng các đối số từ khóa của mẫu
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
69. Chẳng hạn, chức năng sau:keyword
arguments of the form print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
69. For instance, the following function:def chk_number[retry]
if retry==1
print "you have made an invalid choice, try again."
a=int[raw_input["> "]]
if a == 1:
return "this"
if a == 2:
return "that"
else:
return chk_number[1]
print "Pick a number, 1 or 2"
print chk_number[0]
5Chấp nhận một đối số bắt buộc [
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
70] và ba đối số tùy chọn [print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
71, print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
72 và print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
73]. Hàm này có thể được gọi theo bất kỳ cách nào sau đây:def chk_number[retry]
if retry==1
print "you have made an invalid choice, try again."
a=int[raw_input["> "]]
if a == 1:
return "this"
if a == 2:
return "that"
else:
return chk_number[1]
print "Pick a number, 1 or 2"
print chk_number[0]
6Nhưng tất cả các cuộc gọi sau đây sẽ không hợp lệ:
def chk_number[retry]
if retry==1
print "you have made an invalid choice, try again."
a=int[raw_input["> "]]
if a == 1:
return "this"
if a == 2:
return "that"
else:
return chk_number[1]
print "Pick a number, 1 or 2"
print chk_number[0]
7Trong một cuộc gọi chức năng, các đối số từ khóa phải tuân theo các đối số vị trí. Tất cả các đối số từ khóa được truyền phải khớp với một trong các đối số được chấp nhận bởi hàm [ví dụ:
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
74 không phải là một đối số hợp lệ cho hàm print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
75] và thứ tự của chúng không quan trọng. Điều này cũng bao gồm các đối số không tùy chọn [ví dụ: print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
76 cũng hợp lệ]. Không có đối số có thể nhận được một giá trị nhiều hơn một lần. Ở đây, một ví dụ thất bại do hạn chế này:def chk_number[retry]
if retry==1
print "you have made an invalid choice, try again."
a=int[raw_input["> "]]
if a == 1:
return "this"
if a == 2:
return "that"
else:
return chk_number[1]
print "Pick a number, 1 or 2"
print chk_number[0]
8Khi có tham số chính thức cuối cùng của Mẫu
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
77, nó sẽ nhận được một từ điển [xem các loại ánh xạ - Dict] chứa tất cả các đối số từ khóa ngoại trừ các đối số tương ứng với một tham số chính thức. Điều này có thể được kết hợp với một tham số chính thức của mẫu print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
78 [được mô tả trong tiểu mục tiếp theo] nhận được một bộ chứa các đối số vị trí ngoài danh sách tham số chính thức. [print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
78 phải xảy ra trước print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
77.] Ví dụ, nếu chúng ta xác định một hàm như thế này:Mapping Types — dict] containing all keyword arguments except for those corresponding to a formal parameter. This may be combined with a formal parameter of the form print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
78 [described in the next subsection] which receives a tuple containing the positional arguments beyond the formal
parameter list. [print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
78 must occur before print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
77.] For example, if we define a function like this:def chk_number[retry]
if retry==1
print "you have made an invalid choice, try again."
a=int[raw_input["> "]]
if a == 1:
return "this"
if a == 2:
return "that"
else:
return chk_number[1]
print "Pick a number, 1 or 2"
print chk_number[0]
9Nó có thể được gọi như thế này:
print "pick a number, 1 or 2"
a = None
while a not in [1, 2]:
a = int[raw_input["> "]]
if a == 1:
print "this"
if a == 2:
print "that"
else:
print "you have made an invalid choice, try again."
0Và tất nhiên nó sẽ in:
print "pick a number, 1 or 2"
a = None
while a not in [1, 2]:
a = int[raw_input["> "]]
if a == 1:
print "this"
if a == 2:
print "that"
else:
print "you have made an invalid choice, try again."
1Lưu ý rằng thứ tự trong đó các đối số từ khóa được in được đảm bảo để phù hợp với thứ tự mà chúng được cung cấp trong cuộc gọi chức năng.
4.8.3. Thông số đặc biệtSpecial parameters¶
Theo mặc định, các đối số có thể được chuyển đến hàm Python theo vị trí hoặc rõ ràng bằng từ khóa. Đối với khả năng đọc và hiệu suất, có ý nghĩa khi hạn chế cách các đối số có thể được thông qua để nhà phát triển chỉ cần nhìn vào định nghĩa chức năng để xác định xem các mục được truyền theo vị trí, theo vị trí hoặc từ khóa hoặc từ khóa.
Một định nghĩa chức năng có thể trông giống như:
print "pick a number, 1 or 2"
a = None
while a not in [1, 2]:
a = int[raw_input["> "]]
if a == 1:
print "this"
if a == 2:
print "that"
else:
print "you have made an invalid choice, try again."
2trong đó
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
81 và print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
32 là tùy chọn. Nếu được sử dụng, các ký hiệu này chỉ ra loại tham số bằng cách các đối số có thể được truyền đến hàm: chỉ có vị trí, vị trí hoặc từ khóa và chỉ từ khóa. Các tham số từ khóa cũng được gọi là tham số được đặt tên.4.8.3.1. Đối số về vị trí hoặc thông sốPositional-or-Keyword Arguments¶
Nếu
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
81 và print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
32 không có trong định nghĩa hàm, các đối số có thể được truyền đến một hàm theo vị trí hoặc từ khóa.4.8.3.2. Tham số chỉ có vị tríPositional-Only Parameters¶
Nhìn vào điều này chi tiết hơn một chút, có thể đánh dấu các tham số nhất định là chỉ có vị trí. Nếu chỉ có vị trí, các tham số có vấn đề về thứ tự và các tham số không thể được truyền bằng từ khóa. Các tham số chỉ có vị trí được đặt trước một
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
81 [slash phía trước]. print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
81 được sử dụng để phân tách hợp lý các tham số chỉ có vị trí với phần còn lại của các tham số. Nếu không có print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
81 trong định nghĩa hàm, không có tham số chỉ có vị trí.Các tham số sau
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
81 có thể là từ vị trí hoặc từ khóa chỉ.4.8.3.3. Đối số chỉ dành cho từ khóaKeyword-Only Arguments¶
Để đánh dấu các tham số là chỉ từ khóa, chỉ ra các tham số phải được truyền bằng đối số từ khóa, hãy đặt một
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
32 trong danh sách đối số ngay trước tham số chỉ từ khóa đầu tiên.4.8.3.4. Ví dụ chức năng JoFunction Examples¶
Hãy xem xét các định nghĩa chức năng ví dụ sau đây chú ý đến các điểm đánh dấu
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
81 và print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
32:print "pick a number, 1 or 2"
a = None
while a not in [1, 2]:
a = int[raw_input["> "]]
if a == 1:
print "this"
if a == 2:
print "that"
else:
print "you have made an invalid choice, try again."
3Định nghĩa chức năng đầu tiên,
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
92, hình thức quen thuộc nhất, không có hạn chế nào đối với quy ước gọi và đối số có thể được truyền qua vị trí hoặc từ khóa:print "pick a number, 1 or 2"
a = None
while a not in [1, 2]:
a = int[raw_input["> "]]
if a == 1:
print "this"
if a == 2:
print "that"
else:
print "you have made an invalid choice, try again."
4Hàm thứ hai
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
93 bị hạn chế chỉ sử dụng các tham số vị trí vì có print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
81 trong định nghĩa chức năng:print "pick a number, 1 or 2"
a = None
while a not in [1, 2]:
a = int[raw_input["> "]]
if a == 1:
print "this"
if a == 2:
print "that"
else:
print "you have made an invalid choice, try again."
5Hàm thứ ba
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
95 chỉ cho phép các đối số từ khóa được biểu thị bằng print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
32 trong định nghĩa hàm:print "pick a number, 1 or 2"
a = None
while a not in [1, 2]:
a = int[raw_input["> "]]
if a == 1:
print "this"
if a == 2:
print "that"
else:
print "you have made an invalid choice, try again."
6Và lần cuối cùng sử dụng cả ba quy ước gọi trong cùng một định nghĩa chức năng:
print "pick a number, 1 or 2"
a = None
while a not in [1, 2]:
a = int[raw_input["> "]]
if a == 1:
print "this"
if a == 2:
print "that"
else:
print "you have made an invalid choice, try again."
7Cuối cùng, hãy xem xét định nghĩa chức năng này có sự va chạm tiềm năng giữa đối số vị trí
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
97 và print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
98 có print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
97 làm chìa khóa:print "pick a number, 1 or 2"
a = None
while a not in [1, 2]:
a = int[raw_input["> "]]
if a == 1:
print "this"
if a == 2:
print "that"
else:
print "you have made an invalid choice, try again."
8Không có cuộc gọi nào có thể làm cho nó trả về
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
42 vì từ khóa print "pick a number, 1 or 2"
for retry in range[5]:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
else:
print "you keep making invalid choices, exiting."
sys.exit[1]
01 sẽ luôn liên kết với tham số đầu tiên. Ví dụ:print "pick a number, 1 or 2"
a = None
while a not in [1, 2]:
a = int[raw_input["> "]]
if a == 1:
print "this"
if a == 2:
print "that"
else:
print "you have made an invalid choice, try again."
9Nhưng sử dụng
print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
81 [đối số chỉ có vị trí], có thể vì nó cho phép print "pick a number, 1 or 2"
while True:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
97 làm đối số vị trí và print "pick a number, 1 or 2"
for retry in range[5]:
a = int[raw_input["> "]
if a == 1:
print "this"
break
if a == 2:
print "that"
break
print "you have made an invalid choice, try again."
else:
print "you keep making invalid choices, exiting."
sys.exit[1]
01 làm khóa trong các đối số từ khóa:>>> x = int[input["Please enter an integer: "]] Please enter an integer: 42 >>> if x >> x = int[input["Please enter an integer: "]] Please enter an integer: 42 >>> if x >> x = int[input["Please enter an integer: "]] Please enter an integer: 42 >>> if x >> x = int[input["Please enter an integer: "]] Please enter an integer: 42 >>> if x >> x = int[input["Please enter an integer: "]] Please enter an integer: 42 >>> if x >> x = int[input["Please enter an integer: "]] Please enter an integer: 42 >>> if x >> x = int[input["Please enter an integer: "]] Please enter an integer: 42 >>> if x >> x = int[input["Please enter an integer: "]] Please enter an integer: 42 >>> if x >> x = int[input["Please enter an integer: "]] Please enter an integer: 42 >>> if x >> x = int[input["Please enter an integer: "]] Please enter an integer: 42 >>> if x a: in ["b lớn hơn a"]