我正在做一个练习,它告诉我打印出每个人最喜欢的数字。当涉及到多个号码时,我无法将号码排成一行,并用逗号分隔。你能提出一个解决方案吗?
我的代码
favourite_numbers = {
"ha": [20, 10, 4],
"quynh": [2, 5],
"nhung": [3, 10, 12],
"giang": [10],
}
for name, numbers in favourite_numbers.items():
if len(numbers) == 1:
for number in numbers:
print(f"\n{name.title()}'s favourite number is {number}.")
elif len(numbers) >= 2:
print(f"\n{name.title()}'s favourite numbers are:")
for number in numbers:
print(f"{number}")
具有多个数字的人的输出如下所示
Ha's favourite numbers are:
20
10
4
我期待它是这样的:
Ha's favourite numbers are: 20, 10, 4
Python String join() 方法看起来会很有帮助。
favourite_numbers = {
"ha": [20, 10, 4],
"quynh": [2, 5],
"nhung": [3, 10, 12],
"giang": [10],
}
for name, numbers in favourite_numbers.items():
if len(numbers) == 1: length = 'number is'
elif len(numbers) > 1: length = 'numbers are'
numbers = ', '.join(map(str, numbers))
print(f"\n{name.title()}'s favourite {length}", numbers)
输出:
Ha's favourite numbers are 20, 10, 4
Quynh's favourite numbers are 2, 5
Nhung's favourite numbers are 3, 10, 12
Giang's favourite number is 10
当值列表中有多个数字时,您可以通过两次调用 print() 来完成此操作。在第二次调用 print() 时,只需解压缩列表:
favourite_numbers = {
"ha": [20, 10, 4],
"quynh": [2, 5],
"nhung": [3, 10, 12],
"giang": [10],
}
for k, v in favourite_numbers.items():
s = 's are' if len(v) > 1 else ' is'
print(f"{k.title()}'s favourite number{s} ", end='')
print(*v, sep=', ')
可以选择使用映射/连接,如下所示:
for k, v in favourite_numbers.items():
s = 's are' if len(v) > 1 else ' is'
print(f"{k.title()}'s favourite number{s}", ', '.join(map(str, v)))
输出:
Ha's favourite numbers are 20, 10, 4
Quynh's favourite numbers are 2, 5
Nhung's favourite numbers are 3, 10, 12
Giang's favourite number is 10
应该是一个快速解决方案:
for name, numbers in favourite_numbers.items():
if len(numbers) == 1:
for number in numbers:
print(f"\n{name.title()}'s favourite number is {number}.")
elif len(numbers) >= 2:
print(f"\n{name.title()}'s favourite numbers are:", end=" ")
for number in numbers:
# Solution
print(f"{number}", end=", ")
favourite_numbers = {
"ha": [20, 10, 4],
"quynh": [2, 5],
"nhung": [3, 10, 12],
"giang": [10]
}
for name in favourite_numbers:
numbers_in_line = ""
i = 1
count = len(favourite_numbers[name])
for number in favourite_numbers[name]:
if i == count:
comma = ""
numbers_in_line += str(number) + comma
else:
comma = ", "
numbers_in_line += str(number) + comma
i += 1
print(f"{name}'s favourite numbers are: {numbers_in_line}")
输出将是这样的:
ha's favourite numbers are: 20, 10, 4
quynh's favourite numbers are: 2, 5
nhung's favourite numbers are: 3, 10, 12
giang's favourite numbers are: 10
这是代码在 PyCharm 执行后的打印屏幕: