2010-03-21 12 views
5

Trong Python, nếu tôi có người dùng nhập số X, và sau đó chương trình đi vào vòng lặp for trong đó người dùng nhập các giá trị X, có cách nào đó/là một ý tưởng tồi để có tên biến tự động tăng?Cách tăng tên biến/Đây có phải là ý tưởng không hay không

ví dụ:

user inputs '6' 
value_1 = ... 
value_2 = ... 
value_3 = ... 
value_4 = ... 
value_5 = ... 
value_6 = ... 

Tôi có thể làm cho tên biến tăng như thế để tôi có thể có số lượng các biến đầu vào sử dụng? Hoặc tôi có nên sử dụng một phương pháp hoàn toàn khác như thêm tất cả các giá trị mới vào danh sách không?

+5

Sử dụng danh sách thay thế. –

+2

Hoặc từ điển, được khóa bằng giá trị chỉ mục. –

+1

okay Tôi hiểu rằng việc sử dụng danh sách/từ điển sẽ tốt hơn. nhưng hoàn toàn tò mò, đây có phải là cách để làm điều đó theo cách được hỏi không? – tom

Trả lời

11

Bạn nên nối thêm tất cả các giá trị vào danh sách, cho phép bạn dễ dàng lặp lại thông qua các giá trị sau cũng như không xả rác vùng tên của bạn bằng các biến và phép vô dụng.

8

Tôi có nên sử dụng hoàn toàn phương pháp khác nhau chẳng hạn như thêm tất cả giá trị mới vào danh sách?

Có, bạn có thể sử dụng list. Bạn cũng có thể sử dụng mapping cho việc này.

làm tên biến tăng như rằng

số Đó là một ý tưởng horrifyingly xấu.


"nhưng hoàn toàn tò mò, đây có phải là cách làm theo cách được hỏi không?"

Có, nhưng rõ ràng là một ý tưởng tồi tệ khủng khiếp. Vì vậy, không có điểm trong hiển thị nó. Đó là một điều khủng khiếp, khủng khiếp để thậm chí cố gắng.

6

Trong khi sử dụng danh sách hoặc từ điển tất nhiên là cách tiếp cận đúng ở đây, có thể tạo biến được đặt tên, sử dụng exec(). Bạn sẽ bỏ lỡ tất cả các hoạt động thuận tiện mà danh sách và từ điển cung cấp (suy nghĩ của len(), chèn, xoá bỏ, sắp xếp và vân vân), nhưng nó có thể:

count = raw_input('Number of variables:') 
for i in xrange(count): 
    exec('var_' + str(i) + ' = ' + str(i)) 

exec() chấp nhận và thực thi các chuỗi chứa các biểu thức Python hợp lệ. Vì vậy, đoạn mã trên đang tạo và thực thi mã khi đang di chuyển.

2

Có thể điều này sẽ giúp bạn.

filenamee = 'Value_' 
counter1 = 1 
counter2 = 2 
list1 = [] 
list2 = range(30) #random number, given len needed 
for x in list2: 
    counter1 = str(counter1) 
    full_name = (filenamee+counter1) 
    list1.append(full_name) 
    counter1 = counter2 
    counter2+=1 

for x in list1: 
    print(x) 

Nếu bạn muốn tạo biến gia tăng, điều này phù hợp với tôi. Tôi không có đầu mối cho dù đây là chương trình sạch hay không ... :)

Hãy cẩn thận