首页 > 解决方案 > python中的入口和循环

问题描述

我想编写一个可以多次接受用户输入的程序。计算并打印平均年龄以及男性和女性的数量。每次我运行脚本时,我都会得到ZeroDivisionError: integer division or modulo by zero另外当我使用 sum(ages) 时,它返回 0。我需要帮助

print('Enter the required lines of text.')
print('Enter an empty line to quit.')
print('For sex enter M for male and F for female.')
print ('_____________________________________________________________')

# Start with a list containing several names.
names = list()
genders = list()
ages = list()
total = sum(ages)
average = total / len(ages)
# variables to append
new_name = raw_input('Enter Name: ')
new_sex = raw_input('Enter Sex: ')
new_age = raw_input('Enter Age: ')

# while NOT the termination condition
while new_name != '':           
  names.append(new_name)
  genders.append(new_sex)
  ages.append(new_age)
  new_name = raw_input('Enter Name: ')
  new_sex = raw_input('Enter Sex: ')
  new_age = raw_input('Enter Age: ')  # !! reset value at end of loop!

print('The sum of age is:', total)
for new_name in names:
  for new_age in ages:
    for new_sex in genders:
      print(names)
      print(genders)
      print(ages)
      print(average)

标签: pythonlistloops

解决方案


这是问题所在:

average = total / len(ages)

代码中只有一个除法......所以这并不奇怪,发生被零除的地方。

如果你有一个用户列表 - 保持这样:

users = list()
name = raw_input('Enter Name: ')
sex = raw_input('Enter Sex: ')
age = raw_input('Enter Age: ')
user = {'name': name, 'age': age, 'sex': sex}
users.append(user)

您可以raw_input在 while 循环内部进行,而无需初始部分。只需查询并追加。

为避免错误 - 输入后计算信息。现在 -average用零输入计算......

最终for循环 - 对于每个名字,您都调用另一个循环,对于每个年龄,您都调用另一个循环,对于每个性别......我认为这不是需要的。使用您的设计 - 假设所有列表具有相同的长度,创建迭代器并按索引获取元素。然后确保列表具有相同的长度。或者……使用users


推荐阅读