2013-10-16 21 views
7

Tôi đang cố gắng tạo một chương trình kiểm kê để sử dụng trong trò chơi RPG. Chương trình cần có thể thêm và xóa mọi thứ và thêm chúng vào danh sách. Đây là những gì tôi có cho đến nay:LoạiError: chỉ có thể nối danh sách (không phải "str") vào danh sách

inventory=["sword","potion","armour","bow"] 
print(inventory) 
print("\ncommands: use (remove) and pickup (add)") 
selection=input("choose a command [use/pickup]") 

if selection=="use": 
    print(inventory) 
    remove=input("What do you want to use? ") 
    inventory.remove(remove) 
    print(inventory) 

elif selection=="pickup": 
    print(inventory) 
    add=input("What do you want to pickup? ") 
    newinv=inventory+str(add) 
    print(newinv) 

Khi tôi chạy này và cố gắng chọn một số điều lên, tôi nhận được lỗi này:

Traceback (most recent call last): 
    File "H:/Year 10/Computing/A453/Python Programs/inventory.py", line 15, in <module> 
    newinv=inventory+str(add) 
TypeError: can only concatenate list (not "str") to list 

Có ai có cách khắc phục cho điều này, sẽ là đáng kể đánh giá cao

Trả lời

8

tôi nghĩ rằng những gì bạn muốn làm là thêm một mục mới vào danh sách của bạn, vì vậy bạn phải thay đổi dòng newinv=inventory+str(add) với một này:

newinv = inventory.append(add) 

Những gì bạn đang làm bây giờ đang cố gắng nối một danh sách với một chuỗi là một hoạt động không hợp lệ trong Python.

Tuy nhiên tôi nghĩ rằng những gì bạn muốn là để thêm và xóa các mục từ danh sách, trong trường hợp đó bạn if/else khối nên là:

if selection=="use": 
    print(inventory) 
    remove=input("What do you want to use? ") 
    inventory.remove(remove) 
    print(inventory) 

elif selection=="pickup": 
    print(inventory) 
    add=input("What do you want to pickup? ") 
    inventory.append(add) 
    print(inventory) 

Bạn không cần phải xây dựng một danh sách hàng tồn kho mới mỗi thời gian bạn thêm một mục mới.

0

Đó không phải là cách thêm mục vào chuỗi. Điều này:

newinv=inventory+str(add) 

Có nghĩa là bạn đang cố gắng ghép nối danh sách và chuỗi. Để thêm một mục vào danh sách, hãy sử dụng phương thức list.append().

newinv = inventory.append(add) #newinv is the old inventory, with a new item. 

Hoặc để làm mọi việc dễ dàng hơn một chút, chỉ cần hủy danh sách newinv.

inventory.append(add) #adds a new item to inventory 
print(inventory) #prints the new inventory 

Hy vọng điều này sẽ hữu ích!

Các vấn đề liên quan