Hướng dẫn python iterate variable - biến lặp python

Tôi có một nhóm các biến có tên K1, K2 K3 .... K52. Các biến của chúng là danh sách/mảng numpy tùy thuộc vào kịch bản. Về cơ bản tôi muốn thực hiện các thao tác tương tự trên chúng trong một vòng lặp, nhưng đang gặp khó khăn khi đánh bại họ. Về cơ bản những gì tôi muốn là một cái gì đó như thế này:

Nội phân Chính showShow

  • A for Loop thực thi các lệnh một lần cho mỗi giá trị trong một bộ sưu tập.
  • Dòng đầu tiên của vòng lặp phải kết thúc bằng một dấu hai chấm, và cơ thể phải được thụt vào.
  • Một vòng lặp được tạo thành từ một bộ sưu tập, một biến vòng lặp và một cơ thể.
  • Tên biến vòng lặp theo quy ước tên biến bình thường.
  • Cơ thể của một vòng lặp có thể chứa nhiều tuyên bố.
  • Sử dụng phạm vi để lặp qua một chuỗi các số.
  • Hoặc sử dụng phạm vi để lặp lại một hành động một số lần tùy ý.
  • Các mẫu tích lũy biến nhiều giá trị thành một.
  • Phân loại lỗi
  • Truy tìm thực thi
  • Đảo ngược một chuỗi
  • Thực hành tích lũy
  • Tổng tích lũy
  • Xác định lỗi tên biến
  • Xác định lỗi vật phẩm
  • Một vòng lặp có thể là một biến trong Python?
  • Làm thế nào để bạn tự động thay đổi một tên biến trong Python?
  • Làm thế nào để bạn thay đổi một tên biến trong một vòng lặp?
  • Làm thế nào để bạn tuyên bố một biến động trong Python?

for i in arange(0,52): 'k'+ str(i) = log10(eval('k' + str(i)))

Rõ ràng tôi biết những điều trên sẽ không hoạt động, nhưng nó đưa ra ý tưởng. Nỗ lực thực tế của tôi là:

for i in arange(0,10): rate = eval('k' + str(i)) rate = np.array(rate,dtype=float) rate = log10(rate) rate.tolist() vars()[rate] = 'k' + str(i)

. Tôi có cảm giác đây là một cái gì đó khá đơn giản, nhưng nó thoát khỏi tôi vào lúc này.

EDIT: Cảm ơn rất nhiều về câu trả lời, tôi nên giải thích rằng tôi thực sự không thể lưu trữ cho họ một mảng tập hợp, họ cần phải duy trì các biến độc lập vì những lý do tôi không thực sự muốn đi vào.

Chào. Tôi có bốn danh sách: list_0, list_1, list_2, list_3. Tôi muốn áp dụng một khối mã dài cho mỗi mã, điều này sẽ ngắn gọn hơn nhiều nếu tôi lặp qua một vòng lặp hoặc xác định một hàm sẽ làm điều đó, cho mỗi danh sách. Tôi đã nghĩ điều gì đó của hình thức:

Đối với I trong phạm vi (0,3):

list_i = long_block_of_code

Nhưng, list_i không được xác định. Suy nghĩ khác của tôi là bao gồm một cái gì đó như {} .format (), nhưng dường như tôi cũng không thể thực hiện công việc đó. Bất kỳ trợ giúp nào được đánh giá cao

Tổng quan

Giảng dạy: 10 phút Bài tập: 15 phút 10 min
Exercises: 15 min

Câu hỏi

  • Làm thế nào tôi có thể làm một chương trình làm nhiều việc?

Mục tiêu

  • Giải thích những gì cho các vòng thường được sử dụng cho.

  • Theo dõi việc thực hiện một vòng lặp đơn giản (chưa được kiểm chứng) và nêu chính xác các giá trị của các biến trong mỗi lần lặp.

  • Viết cho các vòng lặp sử dụng mẫu tích lũy để tổng hợp các giá trị.

A for Loop thực thi các lệnh một lần cho mỗi giá trị trong một bộ sưu tập.

  • Thực hiện các tính toán trên các giá trị trong một danh sách từng người một cũng đau đớn như làm việc với for number in [2, 3, 5]: print(number) 9, print(2) print(3) print(5) 0, v.v.
  • A For Loop cho Python thực hiện một số câu lệnh một lần cho mỗi giá trị trong danh sách, chuỗi ký tự hoặc một số bộ sưu tập khác.
  • Đối với mỗi điều trong nhóm này, các hoạt động này
for number in [2, 3, 5]: print(number)
  • Vòng lặp print(2) print(3) print(5) 1 này tương đương với:
print(2) print(3) print(5)
  • Và đầu ra vòng lặp print(2) print(3) print(5) 1 là:

Dòng đầu tiên của vòng lặp phải kết thúc bằng một dấu hai chấm, và cơ thể phải được thụt vào.

  • Đại tràng ở cuối dòng đầu tiên báo hiệu sự bắt đầu của một khối các câu lệnh.
  • Python sử dụng thụt lề thay vì print(2) print(3) print(5) 3 hoặc ________ 34/________ 35 để hiển thị làm tổ.
    • Bất kỳ thụt lề nhất quán là hợp pháp, nhưng hầu như tất cả mọi người đều sử dụng bốn không gian.
for number in [2, 3, 5]: print(number) IndentationError: expected an indented block
  • Th thụt lề luôn có ý nghĩa trong Python.
firstName="Jon" lastName="Smith" File "<ipython-input-7-f65f2962bf9c>", line 2 lastName="Smith" ^ IndentationError: unexpected indent
  • Lỗi này có thể được khắc phục bằng cách loại bỏ các khoảng trống thêm ở đầu dòng thứ hai.

Một vòng lặp được tạo thành từ một bộ sưu tập, một biến vòng lặp và một cơ thể.

for number in [2, 3, 5]: print(number)
  • Bộ sưu tập, print(2) print(3) print(5) 6, là những gì vòng lặp đang được chạy trên.
  • Cơ thể, print(2) print(3) print(5) 7, chỉ định những việc cần làm cho mỗi giá trị trong bộ sưu tập.
  • Biến vòng lặp, print(2) print(3) print(5) 8, là những gì thay đổi cho mỗi lần lặp của vòng lặp.
    • Điều hiện tại của người Viking.

Tên biến vòng lặp theo quy ước tên biến bình thường.

  • Các biến vòng lặp sẽ:
    • Được tạo ra theo yêu cầu trong quá trình của mỗi vòng lặp.
    • Kiên trì sau khi vòng lặp kết thúc.
      • Sử dụng một tên biến mới để tránh ghi đè một bộ sưu tập dữ liệu bạn cần giữ sau
    • Thường được sử dụng trong quá trình của vòng lặp
      • Vì vậy, hãy đặt cho họ một cái tên có ý nghĩa mà bạn sẽ hiểu khi mã cơ thể trong vòng lặp của bạn phát triển.
      • Ví dụ: print(2) print(3) print(5) 9 thay vì for number in [2, 3, 5]: print(number) 0for kitten in [2, 3, 5]: print(kitten)

Cơ thể của một vòng lặp có thể chứa nhiều tuyên bố.

  • Sử dụng phạm vi để lặp qua một chuỗi các số.
  • Hoặc sử dụng phạm vi để lặp lại một hành động một số lần tùy ý.
for i in arange(0,10): rate = eval('k' + str(i)) rate = np.array(rate,dtype=float) rate = log10(rate) rate.tolist() vars()[rate] = 'k' + str(i) 0

Sử dụng phạm vi để lặp qua một chuỗi các số.

  • Hoặc sử dụng phạm vi để lặp lại một hành động một số lần tùy ý.
    • Các mẫu tích lũy biến nhiều giá trị thành một.
  • for number in [2, 3, 5]: print(number) 2 là số 0..n-1
    • Chính xác các chỉ số pháp lý của một danh sách hoặc chuỗi ký tự có độ dài n
for i in arange(0,10): rate = eval('k' + str(i)) rate = np.array(rate,dtype=float) rate = log10(rate) rate.tolist() vars()[rate] = 'k' + str(i) 1for i in arange(0,10): rate = eval('k' + str(i)) rate = np.array(rate,dtype=float) rate = log10(rate) rate.tolist() vars()[rate] = 'k' + str(i) 2

Hoặc sử dụng phạm vi để lặp lại một hành động một số lần tùy ý.

  • Bạn không thực sự phải sử dụng giá trị biến số khác nhau.
  • Sử dụng cấu trúc này để đơn giản là lặp lại một hành động một số lần.
    • Số lần đó đi vào hàm for number in [2, 3, 5]: print(number) 1.
for i in arange(0,10): rate = eval('k' + str(i)) rate = np.array(rate,dtype=float) rate = log10(rate) rate.tolist() vars()[rate] = 'k' + str(i) 3for i in arange(0,10): rate = eval('k' + str(i)) rate = np.array(rate,dtype=float) rate = log10(rate) rate.tolist() vars()[rate] = 'k' + str(i) 4

Các mẫu tích lũy biến nhiều giá trị thành một.

  • Một mô hình phổ biến trong các chương trình là:
    1. Khởi tạo một biến tích lũy về 0, chuỗi trống hoặc danh sách trống.
    2. Cập nhật biến với các giá trị từ một bộ sưu tập.
for i in arange(0,10): rate = eval('k' + str(i)) rate = np.array(rate,dtype=float) rate = log10(rate) rate.tolist() vars()[rate] = 'k' + str(i) 5
  • Đọc for number in [2, 3, 5]: print(number) 4 như:
    • Thêm 1 vào giá trị hiện tại của biến vòng lặp print(2) print(3) print(5) 8.
    • Thêm vào giá trị hiện tại của biến tích lũy for number in [2, 3, 5]: print(number) 6.
    • Gán nó cho for number in [2, 3, 5]: print(number) 6, thay thế giá trị hiện tại.
  • Chúng ta phải thêm for number in [2, 3, 5]: print(number) 8 vì for number in [2, 3, 5]: print(number) 1 tạo ra 0..9, không phải 1..10.

Phân loại lỗi

Là lỗi thụt vào lỗi cú pháp hay lỗi thời gian chạy?

Dung dịch

Đó là một lỗi cú pháp. Vấn đề phải làm với vị trí của mã, không phải logic của nó.

Truy tìm thực thi

Tạo một bảng hiển thị số của các dòng được thực thi khi chương trình này chạy và các giá trị của các biến sau mỗi dòng được thực thi.

for i in arange(0,10): rate = eval('k' + str(i)) rate = np.array(rate,dtype=float) rate = log10(rate) rate.tolist() vars()[rate] = 'k' + str(i) 6

Đảo ngược một chuỗi

Điền vào các chỗ trống trong chương trình bên dưới để nó in ra NIT, (mặt trái của chuỗi ký tự ban đầu là TIN TIN).

for i in arange(0,10): rate = eval('k' + str(i)) rate = np.array(rate,dtype=float) rate = log10(rate) rate.tolist() vars()[rate] = 'k' + str(i) 7

Dung dịch

Đó là một lỗi cú pháp. Vấn đề phải làm với vị trí của mã, không phải logic của nó.

for i in arange(0,10): rate = eval('k' + str(i)) rate = np.array(rate,dtype=float) rate = log10(rate) rate.tolist() vars()[rate] = 'k' + str(i) 8

Truy tìm thực thi

for i in arange(0,10): rate = eval('k' + str(i)) rate = np.array(rate,dtype=float) rate = log10(rate) rate.tolist() vars()[rate] = 'k' + str(i) 9

Tạo một bảng hiển thị số của các dòng được thực thi khi chương trình này chạy và các giá trị của các biến sau mỗi dòng được thực thi.

Đảo ngược một chuỗi

for number in [2, 3, 5]: print(number) 0for number in [2, 3, 5]: print(number) 1for number in [2, 3, 5]: print(number) 2for number in [2, 3, 5]: print(number) 3

Điền vào các chỗ trống trong chương trình bên dưới để nó in ra NIT, (mặt trái của chuỗi ký tự ban đầu là TIN TIN).

IndentationError: expected an indented block 0 là một chuỗi trống vì chúng tôi sử dụng nó để xây dựng hoặc tích lũy trên chuỗi ngược của chúng tôi. IndentationError: expected an indented block 1 là biến vòng lặp cho IndentationError: expected an indented block 2. Mỗi lần thông qua vòng lặp IndentationError: expected an indented block 1 có một giá trị từ IndentationError: expected an indented block 2. Sử dụng IndentationError: expected an indented block 1 với IndentationError: expected an indented block 0 để kiểm soát thứ tự của chuỗi. Mã vòng lặp của chúng tôi sẽ trông như thế này:

for number in [2, 3, 5]: print(number) 4

Dung dịch

for number in [2, 3, 5]: print(number) 5

Đó là một lỗi cú pháp. Vấn đề phải làm với vị trí của mã, không phải logic của nó.

  1. Truy tìm thực thi
  2. Tạo một bảng hiển thị số của các dòng được thực thi khi chương trình này chạy và các giá trị của các biến sau mỗi dòng được thực thi.
  3. Đảo ngược một chuỗi
  4. Điền vào các chỗ trống trong chương trình bên dưới để nó in ra NIT, (mặt trái của chuỗi ký tự ban đầu là TIN TIN).
for number in [2, 3, 5]: print(number) 6

IndentationError: expected an indented block 0 là một chuỗi trống vì chúng tôi sử dụng nó để xây dựng hoặc tích lũy trên chuỗi ngược của chúng tôi. IndentationError: expected an indented block 1 là biến vòng lặp cho IndentationError: expected an indented block 2. Mỗi lần thông qua vòng lặp IndentationError: expected an indented block 1 có một giá trị từ IndentationError: expected an indented block 2. Sử dụng IndentationError: expected an indented block 1 với IndentationError: expected an indented block 0 để kiểm soát thứ tự của chuỗi. Mã vòng lặp của chúng tôi sẽ trông như thế này:

  1. Truy tìm thực thi
  2. Tạo một bảng hiển thị số của các dòng được thực thi khi chương trình này chạy và các giá trị của các biến sau mỗi dòng được thực thi.
  3. Đảo ngược một chuỗi
for number in [2, 3, 5]: print(number) 7

Dung dịch

Đó là một lỗi cú pháp. Vấn đề phải làm với vị trí của mã, không phải logic của nó.

for number in [2, 3, 5]: print(number) 8

Truy tìm thực thi
Replace firstName="Jon" lastName="Smith" 1 with firstName="Jon" lastName="Smith" 2, firstName="Jon" lastName="Smith" 3, firstName="Jon" lastName="Smith" 4 or firstName="Jon" lastName="Smith" 5 to have the different items of the list printed.

Tạo một bảng hiển thị số của các dòng được thực thi khi chương trình này chạy và các giá trị của các biến sau mỗi dòng được thực thi.

  • Đảo ngược một chuỗi

  • Điền vào các chỗ trống trong chương trình bên dưới để nó in ra NIT, (mặt trái của chuỗi ký tự ban đầu là TIN TIN).

  • IndentationError: expected an indented block 0 là một chuỗi trống vì chúng tôi sử dụng nó để xây dựng hoặc tích lũy trên chuỗi ngược của chúng tôi. IndentationError: expected an indented block 1 là biến vòng lặp cho IndentationError: expected an indented block 2. Mỗi lần thông qua vòng lặp IndentationError: expected an indented block 1 có một giá trị từ IndentationError: expected an indented block 2. Sử dụng IndentationError: expected an indented block 1 với IndentationError: expected an indented block 0 để kiểm soát thứ tự của chuỗi. Mã vòng lặp của chúng tôi sẽ trông như thế này:

  • Nếu bạn đã mở rộng vòng lặp, các lần lặp sẽ trông giống như thế này:

  • Thực hành tích lũy

  • Điền vào chỗ trống trong mỗi chương trình dưới đây để tạo ra kết quả được chỉ định.

  • Tổng tích lũy

  • Các mẫu tích lũy biến nhiều giá trị thành một.

Một mô hình phổ biến trong các chương trình là:

Khởi tạo một biến tích lũy về 0, chuỗi trống hoặc danh sách trống.any object that supports Python's iterator protocol can be used in a for loop. A variable that holds each element from the container/sequence/generator.

Cập nhật biến với các giá trị từ một bộ sưu tập.

Đọc for number in [2, 3, 5]: print(number) 4 như: The globals() method in Python provides the output as a dictionary of the current global symbol table. The following code uses the for loop and the globals() method to create a dynamic variable name in Python. Output: Copy Hello from variable number 5!

Thêm 1 vào giá trị hiện tại của biến vòng lặp print(2) print(3) print(5) 8.

Thêm vào giá trị hiện tại của biến tích lũy for number in [2, 3, 5]: print(number) 6..

Gán nó cho for number in [2, 3, 5]: print(number) 6, thay thế giá trị hiện tại.

Chúng ta phải thêm for number in [2, 3, 5]: print(number) 8 vì for number in [2, 3, 5]: print(number) 1 tạo ra 0..9, không phải 1..10.

Phân loại lỗi

Là lỗi thụt vào lỗi cú pháp hay lỗi thời gian chạy?

Dung dịch

Đó là một lỗi cú pháp. Vấn đề phải làm với vị trí của mã, không phải logic của nó.

Chủ đề