python - 从列表中拉取
问题描述
我的问题是关于让用户从列表中提取和项目。如果列表中的项目未从列表中拉出,我想告诉用户他不正确。所以我的代码如下所示:
Body_Type = ['Large', 'Medium', 'Small']
print('Create a Character-')
print('Body Type Choices: ' + str(Body_Type))
bt = input('Enter your Body Type: ')
while bt != Body_Type:
if bt == Body_Type[0:]:
print('Your Body Type is: ' + bt)
else:
print('Invalid Body Type')
我想做的是让我的用户创建一个角色。这只是我第一个简单项目的第一部分。我想让他从列表中的一项中拉出来,分别是“大、中、小”。我希望它重复,直到用户选择三个之一。我尝试使用or
,但似乎感觉杂乱无章,我必须分解列表并分配每个单独的变量。
提前致谢!
解决方案
这里有几个错误,比如将字符串与列表进行比较,或者随机切片希望它能起作用。并且您的输入语句在循环之前创建一个无限循环的事实是因为您一次又一次地比较不同类型bt != Body_Type
的 2 个变量(始终True
与内容无关,bt
因为左手是字符串,右手是列表) .
但是编写一些工作代码不应该那么复杂。
我将创建一个无限循环并仅在选项在列表中时才中断:
while True:
bt = input('Enter your Body Type: ')
if bt in Body_Type:
print('Your Body Type is: ' + bt)
break
else:
print('Invalid Body Type')
更简单,更清晰(如果失败则重复输入)。无限循环(始终为真条件)允许避免双重输入调用和测试。只需循环,输入字符串,如果匹配则从循环中中断。
您正在寻找的关键语句是bt in Body_Type
测试字符串是否在列表中。
推荐阅读
- r - 使用 write.table 将列表写入 R 中的 .dat
- javascript - 从express api + react中的给定路径下载zip文件
- c - 每次子进程完成某个任务时如何向父进程发送 SIGUSR1 信号
- typescript - 通过 Typescript 构建 Vite 和 Global Vue 3 组件
- swift - 如何创建 switch 语句 - 使用 UISegmentedControl - 在视图控制器之间切换?
- html - CSS / HTML - 更改字母颜色
- svg - Viewbox改变元素的宽度
- javascript - 检测用户是否使用 javascript 或 jquery 输入电子邮件或号码
- c# - 更新 Firebase 实时数据库中的多个节点
- gatling - 在 Gatling 负载测试中无法获取服务器设置的 cookie 值