循环获取输入

Gtting input ina loop

我想在一个循环中获取输入,我想向用户显示他们正在为该循环中的第 1、2、3 等项目输入数据,有人可以帮我修复我的代码吗?

n=int(input("Pleaseenter the number of laptops: "))
i=0
while i!=n:
laptops_price=input("Please enter the price of the {i}laptop: ".format(i))
i+=1

您将 f 字符串与 format 调用混淆了。它们并不完全相同。这些都可以工作:

laptops_price=input(f"Please enter the price of the {i}laptop: ")
laptops_price=input("Please enter the price of the {}laptop: ".format(i))

使用 {} 而不是 {i},而是使用 for i in range(n) 循环 - 它更方便

此外,我不确定您的确切目的,但请 laptops_prices 列出并改用 .append()

好的,这里有几件事值得考虑:

首先,这个问题对我来说似乎有点模糊,从某种意义上说,您只需标记出您的代码即可使其正常工作,并进行一些小的更改。

其次,您可能需要序号字典设置以将笔记本电脑的名称从“1”更改为 到“1st”等,但这是相当微不足道的。

第三,还有你使用的循环问题。最好使用一个范围。

所以,

调整后的版本(工作):

n=int(input("Please enter the number of laptops: "))
i=0
while i!=n:
    laptops_price=input("Please enter the price of laptop "+str(i)+": ".format(i))
    i+=1

虽然上面的方法有效,但它可能会受益于一些变化。 新版本(工作):

n=int(input("Please enter the number of laptops: "))
for i in range(n):
    laptops_price=input("Please enter the price of laptop "+str(i+1)+": ".format(i))

如果您想要第 1、第 2、第 3、第 4 等的字典,请改用此字典:

n=int(input("Please enter the number of laptops: "))
for i in range(n):
    ordinal = lambda n: "%d%s" % (n,"tsnrhtdd"[(n//10%10!=1)*(n%10<4)*n%10::4])
    laptops_price=input("Please enter the price the "+ordinal(i+1)+" laptop: ".format(i))