当为true时,来自多个用户输入的字典列表共分类

2024-09-30 01:22:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python完全陌生。我正在尝试从用户输入中进行字典连接并打印结果。我在互联网上搜索了所有解决方案,但没有找到任何解决方案。请帮忙

shoeCat = {1: 'Adidas', 2: 'Alexander McQueen', 3: 'Converse', 4: 'Fila', 5: 'Kids/Teens', 6: 'Men’s Kicks', 7: 'New Balance', 8: 'Nike', 9: 'OFF-White', 10: 'Puma', 11: 'Select Brands', 12: 'Slides', 13: 'Under Armour', 14: 'Women’s Kicks'}
mycat1 = input("Enter 1st category: ")
cat1 = [shoeCat[int(x)] for x in mycat1.split()]
print(cat1)
mycat2 = input("Enter 2nd Category: ")
cat2 = [shoeCat[int(x)] for x in mycat2.split()]
print(cat2)
final= cat1 + cat2
print(*final, sep = " | ")

如何使代码使用while true if语句请求无限多个用户输入

while True:
print ('Enter Category: (Press enter to generate.)')
mycat1 = input("")
if mycat1 == '':
    break

我想实现这些目标:

Enter 1st category: 1
['Adidas']
Enter 2nd Category: 2
['Alexander McQueen']
Enter 3rd Category: 6
['Men’s Kicks']
Enter 4th Category: 11
['Select Brands']
Enter 2nd Category: 13
['Under Armour']
Adidas | Alexander McQueen | Men’s Kicks | Select Brands | Under Armour

请告诉我如何让python3为我获得这些结果


Tags: inputselectprintenterundercategoryalexandermen
2条回答

保留一个列表以存储已打印的值:

shoeCat = {1: 'Adidas', 2: 'Alexander McQueen', 3: 'Converse', 4: 'Fila', 5: 'Kids/Teens', 6: 'Men’s Kicks', 7: 'New Balance', 8: 'Nike', 9: 'OFF-White', 10: 'Puma', 11: 'Select Brands', 12: 'Slides', 13: 'Under Armour', 14: 'Women’s Kicks'}
lst = []
while True:
    mycat1 = input("Enter Category: (Press enter to generate.)")
    if mycat1 == '':
        break
    lst.append(shoeCat[int(mycat1)])
    print(shoeCat[int(mycat1)])
print(*lst, sep=" | ")

lst存储打印出的值。然后,您可以使用所需的分隔符简单地打印出列表

请注意,这假设用户总是在shoeCat中输入有效的整数输入。需要进行额外的检查,以确保其能够处理边缘情况

每次都可以将用户输入附加到相同的列表中。while循环将接受输入,如果是空字符串,则中断并打印列表。否则,将输入添加到列表并打印值。你的问题中最棘手的事情实际上是得到序号表示(1、2、3等),这是对here的回答

shoeCat = {1: 'Adidas', 2: 'Alexander McQueen', 3: 'Converse', 4: 'Fila', 5: 'Kids/Teens', 6: 'Men’s Kicks', 7: 'New Balance', 8: 'Nike', 9: 'OFF-White', 10: 'Puma', 11: 'Select Brands', 12: 'Slides', 13: 'Under Armour', 14: 'Women’s Kicks'}
ordinal = lambda n: "%d%s" % (n, "tsnrhtdd"[(n // 10 % 10 != 1) * (n % 10 < 4) * n % 10::4])
i = 1
final = []
while True:
    mycat1 = input(f"Enter {ordinal(i)} category: ")
    if mycat1:
        final.append(shoeCat[int(mycat1)])
        print(final[-1:])
        i += 1
    else:
        print(' | '.join(final))
        break

相关问题 更多 >

    热门问题