我正在为自己正在学习的课程编写赌博/骰子游戏程序,每周都会增加新的要求,并且我们必须实施新代码,而无须从根本上改变到目前为止已编写的代码。我遇到的问题是:现在,如果用户退出(通过输入“ 0”作为他们的“ bet”),则他们“ bank”的内容将保存到文本文件中,以便他们稍后可以继续播放具有相同数量的“彩金”。如果用户破产(游戏结束),则下次他们运行该程序时,其银行将重置为默认金额(500美元)。程序启动时,该代码应检查是否存在保存先前播放数据(bank.txt)的文件;如果文件存在,那么bank.txt中的数字就是用户的“ bank”;如果文件不存在,程序将创建该文件,并将500美元添加到用户的银行中。通过在这里和那里进行调整,我得到了部分的代码(例如,用800美元的现金退出,重新启动游戏,它仍然存在),但是我已经花了很长时间了(感到非常沮丧)我只是无法弄清楚我在做什么错。
> `import os
import random
def main():
intro()
bank = check_bank()
show_bank(bank)
bet = bet_validation(bank)`
那是程序的开始,显然,我似乎无法正确理解的部分在下面...如果我需要发布更多代码,那不是问题,只是其他一切似乎都可以工作正确(以下内容除外)
def check_bank():
try:
if os.path.isfile('./bank.txt') == True:
bank_file = open('bank.txt','r')
if float(bank_file.readline()) > 0.0:
bank = float(bank_file.readline())
return bank
else:
bank = 500.00
return bank
else:
bank_file = open('bank.txt','w')
bank_file.write(str(500.0))
bank = float(bank_file.readline())
bank_file.close()
return bank
except IOError:
print('IOError in check_bank')
except ValueError:
print('ValueError in check_bank')
except Exception as err:
print(err,'in check_bank')
finally:
bank_file.close()
任何和所有帮助/建议/提示将不胜感激。启动程序时,我从“ check_bank()”函数收到“ ValueError”异常。如果有必要,我很乐意提供我的其余代码,只是包括了这一点,因为这似乎是我遇到问题的地方。如果可以提供帮助,请请告诉我我在做什么错,以及如何纠正它!预先感谢大家!
答案 0 :(得分:1)
最后破解了!更改了以下代码,然后进行了宾果游戏!
def check_bank():
try:
if os.path.isfile('./bank.txt') == True:
bank_file = open('bank.txt','r')
bank = float(bank_file.readline())
if bank > 0:
return bank
else:
bank = 500.0
return bank
答案 1 :(得分:0)
如@deHart所述,例外是“无法将字符串转换为浮点数”。问题在于您正在阅读第一行以检查文本文件,然后阅读下一行(空)以设置库。
相反,请阅读该行并将其存储到变量中。然后,进行比较并从此变量设置库-应该可以修复ValueError。
这是对我有用的修改版本:
def check_bank():
try:
if os.path.isfile('./bank.txt') == True:
bank_file = open('bank.txt','r')
vault = float(bank_file.readline())
if vault > 0.0:
bank = vault
return bank
else:
bank = 500.00
return bank
else:
bank_file = open('bank.txt','w')
bank_file.write(str(500.0))
bank = float(bank_file.readline())
bank_file.close()
return bank
except IOError:
print('IOError in check_bank')
except ValueError:
print('ValueError in check_bank')
except Exception as err:
print(err,'in check_bank')
finally:
bank_file.close()
一些注意事项:
答案 2 :(得分:0)
您不应将值存储为纯文本格式。我更喜欢用泡菜
import pickle, os
def check_bank():
try:
file_path = './bank.txt'
#ckeck if file exists
if os.path.isfile(file_path):
file_handler = open(file_path,'rb')
bank = pickle.load(file_handler)
return bank
#if the file doesn't exist
else:
file_handler = open(file_path, 'wb')
pickle.dump(500, file_handler)
file_handler.close()
return 500
except IOError:
print("IOError occured")
except EOFError:
#if the file is empty
file_handler = open(file_path, 'wb')
pickle.dump(500, file_handler)
file_handler.close()
return 500