【发布时间】:2018-11-13 02:17:58
【问题描述】:
我正在为我正在学习的一门课程编写一个赌博/骰子游戏程序,每周都会添加新的要求,我们必须实施新代码,而不会从根本上改变我们迄今为止编写的代码。我遇到问题的部分是:现在,如果用户退出(通过输入“0”作为他们的“赌注”),他们的“银行”的内容将保存到一个文本文件中,以便他们稍后可以恢复播放以相同数量的“奖金”。如果用户破产(游戏结束),下次他们运行程序时,他们的银行将重置为默认金额(500 美元)。当程序启动时,代码应该检查是否存在保存先前播放数据的文件(bank.txt);如果文件存在,bank.txt中的数字就是用户的“银行”;如果文件不存在,程序会创建它并向用户的银行添加 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”异常。如果有必要,我很乐意提供我的其余代码,只包括这一点,因为它似乎是我遇到问题的地方。如果您能提供帮助,请让我知道我做错了什么,以及如何纠正它!提前谢谢各位!
【问题讨论】:
-
你能把
except ValueError替换成except ValueError as e然后print(e)吗?还是只显示堆栈跟踪?您还混淆了else分支。 -
“无法将字符串转换为浮点数”...有问题的“字符串”是“500.0”
-
尝试将该字符串保存到对象中并打印它以确保它不包含错误的字符。因为
float('500.0')将在 100% 的情况下工作。
标签: python python-3.x