相当多的Python新手在这里尝试学习。我有一个同事启动的脚本,我正在努力向其中添加新功能。我想验证用户输入是否在我拥有的两个列表之一之内。
我从用户那里得到一个原始输入,要求一个站点名称,我想添加代码来检查用户输入是否在预定义列表中sites_2017和sites_2018(稍后在代码中使用) ,如果不是,则返回错误;如果不是,则继续执行脚本的其余部分。我一直在搜索,发现很多不同的while循环答案和函数,但是到目前为止,没有一个引用多个列表来进行匹配。
只是想尽办法,找出最适合的代码,以及在当前代码中的while循环中的其他地方,等等。
# Ask user input for what they'd like to do? Render or audit? _Step user through process_
import os
import subprocess
getuser = raw_input("Please enter your username :")
print("1. render_device")
print("2. audit_deivce")
askuser = raw_input("Would you like to render_device or audit_deivce? : ")
#Render:
if askuser == "1":
get_site_name = raw_input("Please enter the site name you'd like to render :")
sites_2017 = ["bob", "joe", "charlie"]
sites_2018 = ["sarah", "kelly", "christine"]
答案 0 :(得分:1)
已更新为可发表评论
您将要在此处利用in
,最好从两个列表中创建一个集合,就像@abarnert在评论中提到的那样。您可以将其包装在函数内部,并在不满足条件的情况下递归调用该函数(请注意,出于Python 3的兼容性,我已将raw_input()
更改为input()
):
getuser = input("Please enter your username :")
print("1. render_device")
print("2. audit_device")
askuser = input("Would you like to render_device or audit_device? : ")
def verify_input(sites_set):
get_site_name = input("Please enter the site name you'd like to render :")
if get_site_name in sites_set:
print('Proceed')
return
else:
print('Not in either list!')
verify_input(sites_set)
if askuser == "1":
sites_2017 = ["bob", "joe", "charlie"]
sites_2018 = ["sarah", "kelly", "christine"]
verify_input(set(sites_2017 + sites_2018))
编辑
但是,更简单的实现是只使用while
循环:
getuser = input("Please enter your username :")
print("1. render_device")
print("2. audit_device")
askuser = input("Would you like to render_device or audit_device? : ")
if askuser == "1":
sites_2017 = ["bob", "joe", "charlie"]
sites_2018 = ["sarah", "kelly", "christine"]
sites_set = set(sites_2017 + sites_2018)
proceed = False
while not proceed:
get_site_name = input("Please enter the site name you'd like to render :")
if get_site_name in sites_set:
print('Proceed')
proceed = True
else:
print('Not in either list!')
答案 1 :(得分:0)
在python中,您可以使用成员资格测试运算符in
。因此,除了使用循环检查外,您还可以组合列表并检查成员资格,如下所示:
if get_site_name in sites_2017 + sites_2018: