Python 如何根据用户输入多次询问一组问题?
使用Python3.7。我试图根据对象的维度来收集信息,但是我很难找到正确的语法 目标是询问有多少个对象以及每个对象的长度和宽度。以下是我目前掌握的情况: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
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:")