Python 如何根据用户输入多次询问一组问题?

Python 如何根据用户输入多次询问一组问题?,python,python-3.7,Python,Python 3.7,使用Python3.7。我试图根据对象的维度来收集信息,但是我很难找到正确的语法 目标是询问有多少个对象以及每个对象的长度和宽度。以下是我目前掌握的情况: num_of_objects = int(input("Enter the number of objects:")) a = 1 while a <= num_of_objects: length = input("Enter length of object:") width = input("Enter widt

使用Python3.7。我试图根据对象的维度来收集信息,但是我很难找到正确的语法

目标是询问有多少个对象以及每个对象的长度和宽度。以下是我目前掌握的情况:

num_of_objects = int(input("Enter the number of objects:"))
a = 1

while a <= num_of_objects:
    length = input("Enter length of object:")
    width = input("Enter width of object:")
我想问的是:

输入对象数:4
输入对象1的长度:
输入对象1的宽度:
输入对象2的长度:
输入对象2的宽度:
输入对象3的长度:
输入对象3的宽度:
输入对象4的长度:
输入对象4的宽度:

我试过很多方法,但都没有用

正如许多评论指出的那样:你一直在循环,直到
a
超过
num\u对象
,但你永远不会在循环中增加
a

避免这种情况的一个常见习惯用法是:

for _ in range(num_of_objects):
    # do some stuff

range(x)
(其中
x
是一个整数)创建一个生成器,它生成一组数字
[0,x)
,其长度为
x
中的
\u
表示我们忽略了循环索引(因为您现在也没有使用它。

从编写逻辑开始,而不是编写代码。当您的逻辑有意义时,您可以将逻辑转换为代码

那么如何编写逻辑呢?您需要一个算法:

在数学和计算机科学中,算法是如何解决一类问题的明确说明

因此,让我们编写一个算法来描述您要编写的程序:

  • 向用户询问多个对象,并将结果保存为
    num\u objects
  • 对于每个对象,向用户询问对象的长度和宽度
  • 还不错,对吧?让我们写些代码吧

    “等等,”你可能会问,“我从哪里开始?”

    好问题。让我们从计划的结构开始,我们想:

    def main():
        num_objects = ask_num_objects()
        object_sizes = ask_object_sizes(num_objects)
    
    好的,这似乎是我们算法的一个最小但合理的实现

    让我们实现
    ask\u num\u对象

    def ask_num_objects():
        return int(input("Enter the number of objects:"))
    
    这很简单。你已经写了代码,我只是从你的问题文本中复制了它

    接下来,我们需要实现
    ask\u object\u size
    。这就是代码中存在逻辑错误的地方。正如评论员所指出的,您没有正确编写循环:

    def ask_object_sizes(num_objects):
        sizes = []
        for i in range(num_objects)
            length = input("Enter length of object {}:".format(i))
            width = input("Enter width of object {}:".format(i))
    
            sizes.append((length, width))
    
        return sizes
    
    花点时间确保您了解此代码的功能,以及它与现有代码不同的原因

    我们可以把这些放在一起,如下所示:

    def ask_num_objects():
        return int(input("Enter the number of objects:"))
    
    def ask_object_sizes(num_objects):
        sizes = []
        for i in range(num_objects)
            length = input("Enter length of object {}:".format(i))
            width = input("Enter width of object {}:".format(i))
    
            sizes.append((length, width))
    
        return sizes
    
    def main():
        num_objects = ask_num_objects()
        object_sizes = ask_object_sizes(num_objects)
    
        # do something with object_sizes
    

    您永远不会更改
    a
    的值,只需在循环之后增加其值即可解决此问题

    while a <= num_of_objects:
        length = input("Enter length of object:")
        width = input("Enter width of object:")
        a += 1
    
    即使如此,我们也应该避免
    while
    循环,并使用
    进行类似这样的循环

    for i in range(num_of_objects):
        length = input("Enter length of object:")
        width = input("Enter width of object:")
    

    当然,这是一个无限循环-a在循环中不会改变,所以它永远是1…如果您已经知道要循环
    a
    次,只需对范围(a)中的i使用
    。然后在
    a
    问题集之后自动结束,此外,您还可以使用
    i+1
    作为问题中的对象计数器。您需要循环中的最后一条语句:
    a+=1
    。更好的是,将
    while
    替换为
    for
    循环。请参阅此可爱的博客以获取帮助。从简单开始
    print
    语句来跟踪逻辑和数据流。在这种情况下,您可以使用
    print a,length,width
    来跟踪循环。如果您搜索短语“Python loops”,您会找到比我们在这里的答案更好的教程来解释它。
    for i in range(num_of_objects):
        length = input("Enter length of object:")
        width = input("Enter width of object:")