是否可以使用 python 列表作为选择?
Is it possible to use a python list as a choice?
全部。我对 Python 有点陌生。我最近参加了一门课程并学习了一些教程。我正在尝试自己探索并制作“东西”。这是基于文本的角色扮演游戏。我正在尝试从我已经创建的预先存在的列表中读取用户输入,以防他们以不同的方式输入选项。
right_Choices = ["right", "Right", "RIGHT"]
left_Choices = ["left", "Left", "LEFT"]
稍后在代码中我询问用户他们想“向左还是向右”走哪个方向?在他们输入之后,我试图让代码理解任何可能的输入,即如果他们先输入“左”,然后再输入“左”或“左”,它仍然会继续理解。
# Check user input for left or right
left_or_right = input("You wake up dazed in a random alley... Unsure of where you are, which way will you go? Left or Right? ")
#Left option
if left_or_right == left_Choices:
ans = input("You stumble into a saloon nearly empty but some faces are there. Feel like having a drink at the bar? Or sitting at an empty table? (bar/table)? ")
if ans == "bar":
print("You sat at the bar and the bartender slides a glass across On the house partner! Nice! A free drink to help out. (+10HP)")
health +=10
elif ans == "table":
print("You sit at an empty table and a group on men approach and seat themselves So tough guy where's our 450Gold!?")
else:
print("You were too drunk to walk, fell down and passed out...")
我希望我的解释至少是可以理解的,因为我对此很陌生,我不确定如何表达这个问题。
x)
你应该进行测试set-theoretic。例如。 :
如果在 Set_of_Left_Turns 中选择或在 Set_of_Right_Turns 中选择:
打印('first branch')
别的:
打印('second branch')
此外,如果您将 choices 变量限制为仅 upper-case 答案,然后使用 choice.upper() 比较已映射到 [=31= 的输入,这将简化事情] 针对一组 upper-case 个选择。
更一般地说,使用想法(例如奇异值分解),您可以使用算法将文本短语映射到几个关键名词,然后根据足够的统计数据而不是原文。即可以使用降维思路。
更一般地说,模糊逻辑的相关之处在于您可以 'defuzzify' 输入,计算该结果的函数,然后模糊化输出。这个概念也与深度学习/神经网络中自动编码器的工作有关。这些都是主成分分析的降维原理。
我建议在您的角色扮演游戏中将动作集设为静态(或明确提供),以便您的用户知道候选选项是什么。看看例如Zork 或 Ultima 5 寻找灵感。
最后的想法,研究 Python 中 switch 语句的可能模拟:
What is the Python equivalent for a case/switch statement?
可以通过不同的方式实现。我假设你想要一个 while 循环。
一种方法是对列表使用 if/elif。
代码:
right_Choices = ["right", "Right", "RIGHT"]
left_Choices = ["left", "Left", "LEFT"]
while True:
user_choice = input('choose direction: ')
if user_choice in right_Choices:
print('right')
break
elif user_choice in left_Choices:
print('left')
break
else:
print('choice not valid! Please choose again')
continue
输出:
choose direction: no
choice not valid! Please choose again
choose direction: left
left
[Program finished]
您可以在匹配之前将输入转换为小写或大写并跳过列表。
像这样:
while True:
user_choice = input('choose direction: ')
if user_choice.lower() == "right":
print('right')
break
elif user_choice.lower() == "left":
print('left')
break
else:
print('choice not valid please choose agaim')
continue
输出:
choose direction: LEFT
left
[Program finished]
或者制作一个全部小写的路线列表,并检查 user_choice.lower() 是否在列表中。
代码:
directions = ['left', 'right', 'forward', 'back']
while True:
user_choice = input('choose direction: ')
if user_choice.lower() in directions:
print(user_choice.lower())
break
else:
print('choice not valid please choose agaim')
continue
输出:
choose direction: To space
choice not valid! Please choose again
choose direction: RIght
right
[Program finished]
全部。我对 Python 有点陌生。我最近参加了一门课程并学习了一些教程。我正在尝试自己探索并制作“东西”。这是基于文本的角色扮演游戏。我正在尝试从我已经创建的预先存在的列表中读取用户输入,以防他们以不同的方式输入选项。
right_Choices = ["right", "Right", "RIGHT"]
left_Choices = ["left", "Left", "LEFT"]
稍后在代码中我询问用户他们想“向左还是向右”走哪个方向?在他们输入之后,我试图让代码理解任何可能的输入,即如果他们先输入“左”,然后再输入“左”或“左”,它仍然会继续理解。
# Check user input for left or right
left_or_right = input("You wake up dazed in a random alley... Unsure of where you are, which way will you go? Left or Right? ")
#Left option
if left_or_right == left_Choices:
ans = input("You stumble into a saloon nearly empty but some faces are there. Feel like having a drink at the bar? Or sitting at an empty table? (bar/table)? ")
if ans == "bar":
print("You sat at the bar and the bartender slides a glass across On the house partner! Nice! A free drink to help out. (+10HP)")
health +=10
elif ans == "table":
print("You sit at an empty table and a group on men approach and seat themselves So tough guy where's our 450Gold!?")
else:
print("You were too drunk to walk, fell down and passed out...")
我希望我的解释至少是可以理解的,因为我对此很陌生,我不确定如何表达这个问题。
x)
你应该进行测试set-theoretic。例如。 :
如果在 Set_of_Left_Turns 中选择或在 Set_of_Right_Turns 中选择: 打印('first branch') 别的: 打印('second branch')
此外,如果您将 choices 变量限制为仅 upper-case 答案,然后使用 choice.upper() 比较已映射到 [=31= 的输入,这将简化事情] 针对一组 upper-case 个选择。
更一般地说,使用想法(例如奇异值分解),您可以使用算法将文本短语映射到几个关键名词,然后根据足够的统计数据而不是原文。即可以使用降维思路。
更一般地说,模糊逻辑的相关之处在于您可以 'defuzzify' 输入,计算该结果的函数,然后模糊化输出。这个概念也与深度学习/神经网络中自动编码器的工作有关。这些都是主成分分析的降维原理。
我建议在您的角色扮演游戏中将动作集设为静态(或明确提供),以便您的用户知道候选选项是什么。看看例如Zork 或 Ultima 5 寻找灵感。
最后的想法,研究 Python 中 switch 语句的可能模拟:
What is the Python equivalent for a case/switch statement?
可以通过不同的方式实现。我假设你想要一个 while 循环。
一种方法是对列表使用 if/elif。
代码:
right_Choices = ["right", "Right", "RIGHT"]
left_Choices = ["left", "Left", "LEFT"]
while True:
user_choice = input('choose direction: ')
if user_choice in right_Choices:
print('right')
break
elif user_choice in left_Choices:
print('left')
break
else:
print('choice not valid! Please choose again')
continue
输出:
choose direction: no
choice not valid! Please choose again
choose direction: left
left
[Program finished]
您可以在匹配之前将输入转换为小写或大写并跳过列表。
像这样:
while True:
user_choice = input('choose direction: ')
if user_choice.lower() == "right":
print('right')
break
elif user_choice.lower() == "left":
print('left')
break
else:
print('choice not valid please choose agaim')
continue
输出:
choose direction: LEFT
left
[Program finished]
或者制作一个全部小写的路线列表,并检查 user_choice.lower() 是否在列表中。
代码:
directions = ['left', 'right', 'forward', 'back']
while True:
user_choice = input('choose direction: ')
if user_choice.lower() in directions:
print(user_choice.lower())
break
else:
print('choice not valid please choose agaim')
continue
输出:
choose direction: To space
choice not valid! Please choose again
choose direction: RIght
right
[Program finished]