Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 与Pickle函数混淆_Python - Fatal编程技术网

Python 与Pickle函数混淆

Python 与Pickle函数混淆,python,Python,因此,我正在为我的妹妹制作一个游戏,她目前是一个糟糕的Python程序员,下面是我的代码: #The Pet Game Coins = '0' Gems = '0' Eggs = "Rotten Egg, Basic Egg, The u-can't-find-it-that-easily-egg :D, The Magical Egg :3, The Unicorn Egg :), the SUPREME EGG" Limited_Eggs = 'Covid-19 Egg'

因此,我正在为我的妹妹制作一个游戏,她目前是一个糟糕的Python程序员,下面是我的代码:

#The Pet Game
Coins = '0'
Gems = '0'
Eggs = "Rotten Egg, Basic Egg, The u-can't-find-it-that-easily-egg :D, The Magical Egg :3, The Unicorn Egg :), the SUPREME EGG"
Limited_Eggs = 'Covid-19 Egg'
coins_added = '0'
gems_added = '0'
if coins_added > '0':
    print("You recieved", coins_added,"coins")
    Coins + coins_added
if gems_added > '0':
    print("You recieved", gems_added,"gems")
    Gems + gems_added
import random
import time
import pickle
Inventory = '1'
Player_Name = input("Hello, before we get started, i need to know your name. What is it? ")
time.sleep(2)
print("Hello there", Player_Name,"and welcome to the world of pets(Is chessy dont judge)")
time.sleep(1)
print("to save your progress type 'save' (caps sensitive) and to load it type load (the save file is called unicornsrdebest.dat btw in case u wanted to know)")
time.sleep(1)
print("To buy eggs type /eggs (caps sensitive) and to chec out inventory type inventory (also caps sensitive)")
time.sleep(1)
Action = input("What would you like to do now")
if Action == 'save':
    Fi = input("What would you like your save file to be called?")
    pickle.dump([Coins, Gems, Inventory], open("unicornsrdebest.dat", "wb"))
if Action == ("load"):
    pickle.load(open("unicornsrdebest.dat", "rb")) 
if Action == '/eggs':
    print(Eggs)

我很困惑,但代码不工作,因为每次我尝试运行它,并尝试保存或加载选项,它只是退出程序。还请使用简单的语言,因为我不久前就开始使用python了。

这看起来是一个有趣的开始项目!我对您的代码做了一些更改:

#宠物游戏
随机输入
导入时间
进口泡菜
#变数
硬币=0
gems=0
存货=1
鸡蛋=[“臭鸡蛋”,
“基本鸡蛋”,
“u-not-find-it-that-easy-egg:D”,
“魔法蛋:3”,“独角兽蛋:)”,
“至高无上的蛋”]
有限_蛋=['新冠病毒-19蛋']
如果硬币>0:
打印(“您收到”,str(硬币),“硬币”)
如果gems>0:
打印(“您收到”,str(宝石),“宝石”)
player_name=input(“你好,在我们开始之前,我需要知道你的名字。是什么?”)
时间。睡眠(2)
打印(“你好,玩家名称”,“欢迎来到宠物世界(是chessy dont judge)”)
时间。睡眠(1)
打印(“要保存进度,请键入“保存”(大写字母敏感)并加载,请键入“加载”(保存文件名为unicornsrdebest.dat btw,以防您想知道)”
时间。睡眠(1)
打印(“购买鸡蛋类型/鸡蛋(大写敏感)和签出存货类型存货(也大写敏感)”)
时间。睡眠(1)
action=input(“您现在想做什么:”)
while(操作!=“退出”):
如果操作==“保存”:
fi=输入(“您希望调用什么保存文件?”)
pickle.dump([硬币、宝石、库存],打开(fi,“wb”))
如果操作==(“加载”):
fi=输入(“您希望加载什么文件?”)
硬币、宝石、库存=pickle.load(打开(fi,“rb”))
如果操作=='/eggs':
印刷品(鸡蛋)
action=input(“您现在想做什么:”)
让我详细说明我到目前为止所做的事情

import random
import time
import pickle

# variables
coins = 0
gems = 0
inventory = 1
标准做法是将导入的库放在顶部,然后是变量。这有利于组织。我也让你的变量变成整数而不是字符串,因为你要数硬币和宝石

eggs=[“臭鸡蛋”,
“基本鸡蛋”,
“u-not-find-it-that-easy-egg:D”,
“魔法蛋:3”,“独角兽蛋:)”,
“至高无上的蛋”]
有限_蛋=['新冠病毒-19蛋']
我制作了鸡蛋和有限的鸡蛋清单,因为它们是多个项目

while(操作!=“退出”):
如果操作==“保存”:
fi=输入(“您希望调用什么保存文件?”)
pickle.dump([硬币、宝石、库存],打开(fi,“wb”))
如果操作==(“加载”):
fi=输入(“您希望加载什么文件?”)
pickle.load(打开(fi,“rb”))
如果操作=='/eggs':
印刷品(鸡蛋)
action=input(“您现在想做什么:”)
我将你的if语句设置为while loop,这样你就可以继续玩游戏了。当您输入“退出”时,它将停止

如果操作==(“加载”):
fi=输入(“您希望加载什么文件?”)
硬币、宝石、库存=pickle.load(打开(fi,“rb”))
我想这就是你遇到麻烦的地方。我改变了它,所以硬币,宝石和库存都会在文件加载后改变


下次在此社区中,只显示您遇到问题的代码行。您可能想查看的另一个社区是。享受这个项目的乐趣

您能更具体地说明您遇到的错误是什么吗?每当我进入操作变量输入并输入“保存”或“加载”时,它就会退出程序,您希望它在这之后做什么?你这样做之后就什么都没有了,所以程序终止了。好吧,我不知道你需要写
硬币,宝石,存货=pickle.load(…)
。现在,您只需读取pickle文件,然后丢弃结果。请同时更正“receive”的拼写,即使你没有问这个问题。tysm这正是我要找的!!嗯,我很好奇,但是str是什么意思?如果你把
str(blahblahblah)
,它会做一些特殊的事情吗?
str()
函数会把一个对象转换成一个字符串。例如,str(4)转换整数4->“4”。不客气!如果你觉得这篇文章有帮助,请点击“接受这个答案”标记。非常感谢。