使用Python 3.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:")
截至目前,尽管有num_of_objects
输入,它仍在似乎是无限循环的情况下输出此结果:
Enter the number of objects: 4
Enter length of object:
Enter width of object:
我想问的是一些类似的东西:
Enter the number of objects: 4
Enter length of object 1:
Enter width of object 1:
Enter length of object 2:
Enter width of object 2:
Enter length of object 3:
Enter width of object 3:
Enter length of object 4:
Enter width of object 4:
我尝试了许多尝试,但都没有成功。
答案 0 :(得分:1)
首先编写逻辑而不是代码。当逻辑有意义时,就可以将逻辑转换为代码。
那么您如何编写逻辑?您需要一个算法:
在数学和计算机科学中,算法是如何解决一类问题的明确说明
https://en.wikipedia.org/wiki/Algorithm
因此,让我们编写一种算法来描述您要编写的程序:
num_objects
还不错吧?让我们写一些代码!
“等等,”您可能会问-“我从哪里开始?”
很好的问题。让我们首先布局我们想要的程序结构:
def main():
num_objects = ask_num_objects()
object_sizes = ask_object_sizes(num_objects)
好的,这似乎是我们算法的最小但合理的实现。
让我们实施ask_num_objects
:
def ask_num_objects():
return int(input("Enter the number of objects:"))
那很容易。您已经编写了该代码,我只是从您的问题文本中复制了它。
接下来,我们需要实现ask_object_sizes
。这是您的代码中出现逻辑错误的地方。正如评论者指出的那样,您没有正确编写循环:
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
答案 1 :(得分:0)
许多评论指出:您一直循环执行,直到a
超过num_of_objects
,但是您永远不会在循环内递增a
。
避免这种情况的常见用法是
for _ in range(num_of_objects):
# do some stuff
range(x)
(其中x
是整数)创建一个生成器,该生成器生成数字集[0,x)
,其长度为x
。 _
中的for _ in ...
仅表示我们忽略了循环索引(因为您现在也不使用它。
答案 2 :(得分:0)
您永远都不会更改a
的值,可以通过像这样反复循环后简单地增加其值来解决此问题
while a <= num_of_objects:
length = input("Enter length of object:")
width = input("Enter width of object:")
a += 1
Enter the number of objects:4 Enter length of object:1 Enter width of object:2 Enter length of object:1 Enter width of object:2 Enter length of object:1 Enter width of object:2 Enter length of object:1 Enter width of object:2
即使如此,我们也应该避免while
循环,并使用for
循环
for i in range(num_of_objects):
length = input("Enter length of object:")
width = input("Enter width of object:")