В приведенном ниже коде я пытаюсь проверить, является ли значение (b) ключом в kwargs, а если да, то остальное.Использование kwargs in while loop - Python 3
def shop(**kwargs):
buy = 1
print ("Welcome to the shop!")
for i, v in kwargs.items():
print (" ", i, ": ", v)
while buy == 1:
b = input ("What would you like to buy? ").lower()
if b == i.lower():
if v <= Player.gold:
Player.gold -= v
Player.inv_plus(i)
print ("You bought ", i, "for ", v, "gold!")
print ("Your gold: ", Player.gold)
print (Player.show_inv())
print()
else:
print ("You don't have enough gold!")
print()
elif b == "exit":
buy = 0
else:
print ("We don't sell that item!")
print()
shop(Stone=5, Potion=10)
Однако, когда я пытаюсь запустить код, он всегда позволяет использовать только один вариант. Я нахожу, что трудно объяснить, так что я приведу пример:
Welcome to the shop!
Stone : 5
Potion : 10
What would you like to buy? stone
We don't sell that item!
What would you like to buy? potion
You bought Potion for 10 gold!
Your gold: 0
Inventory:
Potion 6
Stone 2
Он не приемлет камень, даже если он находится в словаре, однако, он будет принимать микстуру. В других случаях это будет наоборот.
Сначала я подумал, что это было из-за цикла, но теперь я не уверен, и я не могу найти ничего, что могло бы помочь мне в этом где-нибудь еще.
Извините, если это довольно специфично, но это дает мне немного неприятностей.
«' i' переменной заканчивается, содержащее имя последнего элемента в kwargs»- где то, что в конечном итоге приходит последний совершенно произвольно и не обязательно связаны с порядком аргументов в вызове, алфавитном порядке или каким-либо согласным каким-либо образом. – user2357112