提问人: 提问时间:10/20/2023 更新时间:10/20/2023 访问量:83
Python如何检查输入字符串是否在外部嵌套字符串内?
Python how to check if input string is inside of outer nested string?
问:
# ******************************************************************************************************
# Data is imported from the included awards_data.py file. Both files must remain in the same directory.
# Do not modify the code in this section.
# You may not hardcode (manually enter in the code) any other data.
from awards_data import SAG, oscars, NBR, ISA, GLAAD, NAACP
award_list_names = ['sag', 'oscars', 'nbr', 'isa', 'glaad', 'naacp']
award_list_options = [SAG, oscars, NBR, ISA, GLAAD, NAACP]
# ******************************************************************************************************
程序必须询问您要从列表列表中打印哪个列表(this)
award_list_options = [SAG, oscars, NBR, ISA, GLAAD, NAACP]
因此,如果用户输入下垂,则应从之前导入的原始 SAG 列表中打印 SAG 的值
如果相关,这是awards_data文件
SAG = ["1", "2"]
oscars = ["1", "3", "4", "5", "3",
"1", "6", "7", "3", "8",
"1", "32", "3", "2"]
NBR = ["2", "9", "3", "10", "Close", "Sr.", "6"]
ISA = ["1", "11", "12", "1", "13", "Tár", "1"]
GLAAD = ["15", "16", "17", "18", "19"]
NAACP = ["8", "20", "16", "21", "22"]
对于输入垂度,输出应为:
1,2
对于输入 oscars、OSCARS、oscarS 或带空格的应为
1,3,4,5,3,1,6,7,3,8,1,32,3,2 all separated with new line
答:
1赞
Daviid
10/20/2023
#1
你的代码中有很多错误,你要么没有按原样发布你的代码,这使得我们给你的任何帮助都毫无用处,因为我们不在同一页面上,或者你只是忽略了插入者的错误。
- 首先,你没有传递任何东西来解决这个问题。
print_award_winners
- 其次,in 可能会被选为全局变量,最好还是为此使用参数,也可以使字符串小写,就像
Award_Selection.(lower).strip()
Award_Selection
'string'.lower()
strip
- 最后,该调用是缩进的,python 会抱怨,所以也要解决这个问题。
print_award_winners()
这是清理后的代码。
def print_award_winners(winner):
winner = winner.lower().strip()
if winner in award_list_options:
for movie in award_list_options[winner]:
print(movie)
award_list_options = {
"sag": ["1", "2"],
"oscars": ["1", "3", "4", "5", "3", "1", "6", "7", "3", "8", "1", "32", "3", "2"],
"nbr": ["2", "9", "3", "10", "Close", "Sr.", "6"],
"isa": ["1", "11", "12", "1", "13", "Tár", "1"],
"glaad": ["15", "16", "17", "18", "19"],
"naacp": ["8", "20", "16", "21", "22"],
}
Award_Selection = input("Enter winner: ")
print_award_winners(Award_Selection)
最新代码:
# ******************************************************************************************************
# Data is imported from the included awards_data.py file. Both files must remain in the same directory.
# Do not modify the code in this section.
# You may not hardcode (manually enter in the code) any other data.
from awards_data import SAG, oscars, NBR, ISA, GLAAD, NAACP
award_list_names = ['sag', 'oscars', 'nbr', 'isa', 'glaad', 'naacp']
award_list_options = [SAG, oscars, NBR, ISA, GLAAD, NAACP]
# ******************************************************************************************************
def print_award_winners(winner):
winner = winner.lower().strip()
if winner in name_to_list_relations:
for movie in name_to_list_relations[winner]:
print(movie)
name_to_list_relations = dict(zip(award_list_names, award_list_options))
Award_Selection = input("Enter winner: ")
print_award_winners(Award_Selection)
了解 zip() 这里 和 这里
评论
0赞
10/20/2023
使用此代码,它似乎仍然没有给我任何值。这只是代码的一部分,不能发布整个代码,因为这是一个学校项目,由于学术不端行为,我不想在这里发布我的整个项目。虽然我确实在这里发布了所需的一切。
0赞
Daviid
10/20/2023
如果你有像“Close”和“Sr.”这样的大写字母,那么你不应该这样做,因为它永远不会匹配这些值,除非你还想匹配子列表中的每个元素。.lower()
lower
0赞
10/20/2023
这就是为什么我想以某种方式将下垂与 SAG 相匹配,并将 SAG 作为一个整体打印。所以输入可能会下垂,但它应该知道它意味着 SAG 并打印 SAG 中的所有内容我不知道我是否正确解释了它
0赞
10/20/2023
问题是我无法将 sag 与 SAG 匹配,我可以将其设置为 .upper(),但奥斯卡列表将不起作用,因为这是小写的
0赞
Daviid
10/20/2023
这是可以做到的,但它使用得很丑陋,既然你说这是一个学校项目,那显然不是答案,你显然误解了作业。eval()
0赞
Peter
10/20/2023
#2
使用字典的快速示例,不确定它是否符合您的“作业”要求,但它应该回答您的原始问题。
import awards_data
award_list_options = {
"SAG": awards_data.SAG,
"oscars": awards_data.oscars,
"NBR": awards_data.NBR,
"ISA": awards_data.ISA,
"GLAAD": awards_data.GLAAD,
"NAACP": awards_data.NAACP
}
def print_award_winners(winner):
for award, options in award_list_options.items():
if winner.lower().strip() in map(str.lower, options):
print(award)
print_award_winners('1')
# SAG
# oscars
# ISA
不太确定他们希望您如何从变量中打印出“SAG”,但如果您只是对选项进行硬编码,它就会起作用。也许他们只是想让你学习 if 语句(即)。SAG
if '1' in SAG: print('SAG')
评论
0赞
10/20/2023
我们不允许更改award_list_options列表
0赞
Peter
10/20/2023
更新为不更改它,但是是的,这听起来不像是一个“好”的任务。
0赞
gboffi
10/20/2023
#3
您需要一个辅助数据结构
names = [n.lower() for n in ["SAG", "oscars", "NBR", "ISA", "GLAAD", "NAACP"]]
然后
def p():
s = input('Prompt: ')).lower().strip()
if s in names:
print(*award_list_options[names.index(s)] sep=', ')
else:
print('No Matches')
更好的是,使用字典。
评论