Python 如何从用户处获取输入,并检查其中是否有一部分是字典中的键?
我需要从用户那里获得输入,并检查“city”后面的单词是否在我的字典(键)中 这是我的dic:Python 如何从用户处获取输入,并检查其中是否有一部分是字典中的键?,python,dictionary,input,Python,Dictionary,Input,我需要从用户那里获得输入,并检查“city”后面的单词是否在我的字典(键)中 这是我的dic: mydic = {'Paris':132, 'Rome':42, 'San Remo':23} 我需要用户写‘城市’(根据我给他们的指示,他们会这样做),但之后他们必须写一个城市名称。所以他们会写一些类似的东西,比如:“巴黎城”,这必须返回:“巴黎有132座教堂”,或者如果他们写“圣雷莫城”,则必须返回:“圣雷莫有23座教堂” 代码有一个条件,因为如果用户输入'city gba',那么它将返回一个特
mydic = {'Paris':132, 'Rome':42, 'San Remo':23}
我需要用户写‘城市’(根据我给他们的指示,他们会这样做),但之后他们必须写一个城市名称。所以他们会写一些类似的东西,比如:“巴黎城”,这必须返回:“巴黎有132座教堂”,或者如果他们写“圣雷莫城”,则必须返回:“圣雷莫有23座教堂”
代码有一个条件,因为如果用户输入'city gba',那么它将返回一个特定的东西。因此,问题在于elif部分,其中有更多的城市选择
这是我认为可行的方法,但由于明显的原因,它行不通:
user_input = input().lower()
if user_input == 'city gba':
print('City gba has', city_data.get('gba'), 'churches')
elif user_input.split() == 'city' + '':
for x in user_input:
if x in mydic.keys():
print(x, 'has', city_data.get(x), ' churches.')
我还能怎么做?
谢谢。您的代码即将运行
user_input = input().lower() # Assume user input is "city Rome"
tag, city = user_input.split(" ", 1) # This will set tag = 'city' and city = 'rome'
if tag == 'city':
if city.capitalize() in mydic: # You could also do mydic.keys() it doesn't matter
print(f"{city} has {county_data.get(city)} churches.")
编辑:
.split()
不起作用,因为像美国
或梵蒂冈城
这样的城市是用空格分隔的。我们应该使用.split(“,1)
,它只会在第一次出现空格时进行拆分。您的代码非常接近工作状态
user_input = input().lower() # Assume user input is "city Rome"
tag, city = user_input.split(" ", 1) # This will set tag = 'city' and city = 'rome'
if tag == 'city':
if city.capitalize() in mydic: # You could also do mydic.keys() it doesn't matter
print(f"{city} has {county_data.get(city)} churches.")
编辑:
.split()
不起作用,因为像美国
或梵蒂冈城
这样的城市是用空格分隔的。我们应该使用.split(“,1)
,它只会在第一次出现空格时进行拆分。像这样简单的方法应该可以工作
代码
#prompt user for city name
city = input('Enter a city. Format \'city name\': ')
#split user input at spaces. #['city','cityName']
#take the second element in this list
city = city.split()[1]
#check if that city is in the given dictionary. If so we print the cities church count.
if city in mydic.keys():print(f'{city} has {mydic[city]} churches')
#if it is not visible in the dictionary we show that city is not located in the given dictionary
else:print('City not in dictionary')
输入
Enter a city. Format 'city name': city Paris
Paris has 132 churches
输出
Enter a city. Format 'city name': city Paris
Paris has 132 churches
像这样简单的事情应该行得通 代码
#prompt user for city name
city = input('Enter a city. Format \'city name\': ')
#split user input at spaces. #['city','cityName']
#take the second element in this list
city = city.split()[1]
#check if that city is in the given dictionary. If so we print the cities church count.
if city in mydic.keys():print(f'{city} has {mydic[city]} churches')
#if it is not visible in the dictionary we show that city is not located in the given dictionary
else:print('City not in dictionary')
输入
Enter a city. Format 'city name': city Paris
Paris has 132 churches
输出
Enter a city. Format 'city name': city Paris
Paris has 132 churches
请注意,名称
和键必须完全匹配。我建议您将两者都降到小写进行比较。将dict编码为全小写
请注意,
名称
和键必须完全匹配。我建议您将两者都降到小写进行比较。将dict编码为全小写。您的用例正是Python 3.10新功能的关键所在。因此,您的代码可以重写为:
user\u input=input().lower()
匹配用户输入。拆分()
案例['city','gba']:
打印('City gba has',City_data.get('gba'),'churches'))
案例['city',city]:
如果城市位于mydict:
打印(城市,'has',城市数据[city],'churches')
您的用例正是Python 3.10新功能的关键所在。因此,您的代码可以重写为:
user\u input=input().lower()
匹配用户输入。拆分()
案例['city','gba']:
打印('City gba has',City_data.get('gba'),'churches'))
案例['city',city]:
如果城市位于mydict:
打印(城市,'has',城市数据[city],'churches')
您是否知道.split()
返回一个列表?它永远不会等于一个字符串。在您的情况下,user\u input.split()
将是['city','paris']
。也许这可以帮助您提高您是否知道.split()
返回一个列表?它永远不会等于一个字符串。在您的情况下,user\u input.split()
将是['city','paris']
。也许这可以帮助你提高Cepthyton有一个大写的方法。我已经更新了我的答案来使用它谢谢你的答案。我把这个代码放在一个条件中,所以它给了我一个语法错误,因为“tag,city”中的逗号,你知道有没有办法把它放在一个条件中吗?@satoru如果你指的是if user\u input.split()=='city'+'':
从你的问题来看,它不应该是有条件的…@Tomerikoo我的代码比这个大,而且输入还有更多的可能性,所以其中一个是如果他们键入city和城市名称,那么这实际上是:elif tag,city(因为这是选项之一)@satoru根据你的编辑,新的Python3.10功能的目标用例Python似乎有一个capitalize
方法。我已经更新了我的答案来使用它谢谢你的答案。我把这个代码放在一个条件中,所以它给了我一个语法错误,因为“tag,city”中的逗号,你知道有没有办法把它放在一个条件中吗?@satoru如果你指的是if user\u input.split()=='city'+'':
从你的问题来看,它不应该是有条件的…@Tomerikoo我的代码比这个大,而且输入还有更多的可能性,所以其中一个是如果他们键入city和城市名称,那么这实际上是:elif tag,city(因为这是选项之一)@satoru根据你的编辑,它似乎是新的Python 3.10特性的目标用例