想问下这道题还有其他解法吗?
题目要求:如果输入的姓名是'James','Amy','John','Amanda'和'Bob'中的一个,则同步输出后面对应的年龄(具体格式为name is age,例如 James is 42),如果输入的姓名不在前面提到的5者之中,则直接输出Not Found。下面是参考答案:
contacts = [
('James', 42),
('Amy', 24),
('John', 31),
('Amanda', 63),
('Bob', 18)
]
name=input('请输入姓名:')
NotFound=True#
for x in contacts:
if x==name:
print('{} is {}'.format(x,x))
NotFound=False #
break #
if NotFound: #
print('Not Found')
请教下:
#备注的这几行代码是什么意思,除了这种解法,还有其他推荐的程序写法吗? 鱼油你好!我明白你提出的问题。我们先来看一下代码中备注的几行是什么意思:
- `NotFound=True`:初始化一个变量`NotFound`为`True`,表示还没有找到对应的姓名。
- `NotFound=False`:一旦找到了对应的姓名,将`NotFound`设置为`False`,表示找到了。
- `break`:在找到匹配的姓名后,立即终止循环。
- `if NotFound:`:当循环结束后,如果`NotFound`仍然是`True`,说明输入的姓名在预定义名单中未找到。
这种方法通过一个循环和标志变量`NotFound`来处理找到或未找到的情况。
接下来我给你一个更加简洁的方法,使用字典来存储姓名和对应的年龄:
contacts = {
'James': 42,
'Amy': 34,
'John': 29,
'Amanda': 25,
'Bob': 50
}
name = input('请输入姓名:')
if name in contacts:
print(f'{name} is {contacts}')
else:
print('Not Found')
解释:
- 使用字典`contacts`来存储姓名和年龄的对应关系,方便快速查找。
- 使用`if name in contacts`来检查姓名是否在字典中。
- 如果找到,则输出对应的年龄;如果找不到,则输出`Not Found`。
这种方法直接利用字典的查找特性,更加简洁和高效。希望这样讲解对你有帮助!有什么其他问题随时问我。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 这样写 也可以 都差不多不过 for......else一般新手更不容易理解
contacts = [('James', 42),('Amy', 24),('John', 31),('Amanda', 63),('Bob', 18)]
name=input('请输入姓名:')
for x in contacts:
if x==name:
print('{} is {}'.format(x,x))
break
else:
print('Not Found') wp231957 发表于 2024-8-26 16:18
这样写 也可以 都差不多不过 for......else一般新手更不容易理解
else和for是一个等级,怎么理解,没太懂,233333
我之前把else放在和if同一等级,然后输出Amy时,会先输出Not Found,再输出Amy is 24 2666 发表于 2024-8-26 17:12
else和for是一个等级,怎么理解,没太懂,233333
我之前把else放在和if同一等级,然后输出Amy时,会先输 ...
python是一个等级森严的语言
层次结构不可以瞎弄的
for....else要求for里面要有break语句
如果那个break没有机会被执行,那么就会跑到else这里
这样就省下了加一个变量标记,然后再循环中修改这个标记,已达到判断的目标 本帖最后由 jackz007 于 2024-8-26 18:29 编辑
contacts = {'James' : 42 ,
'Amy' : 24 ,
'John' : 31 ,
'Amanda' : 63 ,
'Bob' : 18}
name = input('请输入姓名:')
if name in contacts . keys() : # 如果 name 出现在列表 ['Amy' ,'John' ,'Amanda' ,'Bob'] 中
print(name + ' is ' + str(contacts))
else : # 否则
print('Not Found') wp231957 发表于 2024-8-26 17:23
python是一个等级森严的语言
层次结构不可以瞎弄的
for....else要求for里面要有break语句
长见识了,2333,这个代码是真的强 jackz007 发表于 2024-8-26 17:29
这个解法也很nice,不过原题contacts是列表中的元组形式,23333,要先用dict转为字典
页:
[1]