Python生成'Hello'字符数平均值计算遇'int'不可迭代错误求助
解决计算随机字符生成次数平均值时的TypeError问题
错误原因
statistics.mean() 函数要求传入可迭代对象(如列表、元组),但你在循环中直接传入了单个整数 attempts——整数不属于可迭代类型,因此触发了 TypeError: 'int' object is not iterable。
修正后的代码
把函数定义移到循环外部(无需每次循环重复定义),用列表存储10次运行的结果,最后对列表求平均值:
import string import random import statistics def task8(word): word = word.lower() x = 0 attempts = 0 while x < len(word): attempts += 1 z = random.choice(string.ascii_lowercase) if z == word[x]: x += 1 return attempts # 存储10次生成的字符数结果 attempts_list = [] for _ in range(10): current_attempts = task8("hello") attempts_list.append(current_attempts) print(current_attempts) # 计算并输出平均值 average = statistics.mean(attempts_list) print(f"平均值: {average}")
关键优化点
- 将
task8函数移到循环外,避免不必要的重复定义,提升代码效率。 - 用
attempts_list收集每次的结果,确保statistics.mean()能接收到符合要求的可迭代参数。 - 循环内变量名改为
current_attempts,避免和列表名混淆,提升代码可读性。
内容的提问来源于stack exchange,提问作者Jamie Turner
相关产品推荐
相关产品推荐

