python - 某些用户输入第一次工作正常,第二次遇到异常
问题描述
编辑:我发现了问题。在某些时候,即使我的列表有浮点数,我的代码也会要求整数。我将 int 更改为 float,它现在似乎正在工作。
我提前为错误道歉,英语不是我的母语。
我对编码(Python 3.x)非常陌生,并试图编写一个非常简单的基于文本的游戏只是为了好玩。
它的工作方式是将 csv 文件复制到列表中。
文件格式为:no., question, answer1, answer2, reply1, reply2, element1, element2, value_element1, value_element2, next_question1, next_question2
标题后面的 1 代表发生的值和操作,如果您选择答案 1,答案 2 也是如此。
我通过放置一个 while True >> try 循环来请求输入。我的问题是,一旦我到达第二个问题,如果我输入 2. 1 就不会再接受我的输入了。
如果这不是足够的信息,我很抱歉。我将在这里放一部分代码以及 .py 文件的下载链接。
任何帮助,将不胜感激
循环:
def quiz():
global next_q
global health
print("\n{}".format(events[int(next_q)][1]))
options = "\n(1) {} | (2) {}\n\n> ".format(events[int(next_q)][2], events[int(next_q)][3])
while True:
try:
answer = int(input(options))
print(answer)
print(type(answer))
if answer == 1:
print(events[int(next_q)][4])
if events[int(next_q)][6] == "health":
pre_health = health
health += int(events[int(next_q)][8])
print("\n\n\nHP: {} >>> {}.\n".format(pre_health, health))
next_q = events[int(next_q)][10]
break
elif answer == 2:
print(events[int(next_q)][5])
if events[int(next_q)][7] == "health":
pre_health = health
health += int(events[int(next_q)][9])
print("\n\n\nHP: {} >>> {}.\n".format(pre_health, health))
next_q = events[int(next_q)][11]
break
elif answer == 0:
next_q = events[int(next_q)][0]
reset(next_q)
print("\nAuf Wiedersehen!")
quit()
else:
raise ValueError
except ValueError:
print("\nBitte gebe 1 oder 2 ein.")
quiz()
代码的下载链接,csv。文件和 save.txt 文件,保存进度并在开始游戏时加载:https ://www.mediafire.com/file/817ud3y725zsx55/OneDrive_1_22.6.2021.zip/file
解决方案
推荐阅读
- java - 消费者根据生产者发送的消息触发api
- javascript - 如何在 Angular 11 的 setInterval 延迟中使用 JSON 变量
- c++ - 如何将二进制文件读入 C++ 中的类数组?
- python - Python bz2 在读取整个文件之前返回 EOFerror
- java - 我的第一次编码,但我不知道它是否正确
- amazon-web-services - AWS - 在飞行中创建卷并将其附加到容器
- java - 尝试使用作业运算符停止弹簧批处理时的问题
- linux - fw_printenv 不显示来自 uboot.env 的环境变量
- sql-server - 需要一个查询(一个存储过程)将数据从 2 个表插入到多 (3) 个表中
- c# - Epplus 5.6:导出 ToDataTable 时如何忽略一行