python - 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)
解决方案
这是问题所在:
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
。
推荐阅读
- java - 测试 Lombok 的 @UtilityClass 自动生成的代码
- excel - 复制工作表而不复制完整数据验证地址
- c# - 调整控制台 c# .framework
- python - 如何将字节转换为字符串?
- ruby-on-rails - Rich_text 和 Active Storage S3 上传返回 200 但未上传文件
- dataframe - 为什么 XLSX 创建的数据框的列类型总是输入 any
- c++ - 无法从 WSL2 启动 exe 文件
- c# - 从使用 iText7 (C#) 创建的 PDF 中获取图像
- javascript - 如何在 Ember 的服务存储中更新数据?
- python - Python - 对字典中的重复值求和