我有一个桌面文件(文字、数字和标点符号的段落)。我只需要获取数字,对它们进行排序,打印排序列表、长度和中位数。我可以打开、阅读和提取数字,但所有数字(甚至我的两位数)都打印在“ “。我被允许使用进口统计数据。
我尝试过几次。我知道我需要一个 .split()、.strip() 和 .append。我只是不知道在哪里。
from statistics import median
def sorting_file():
with open('C:\\Users\\wildk\\Desktop\\Numbers_in_text.txt', 'r') as f:
for line in f:
words = line.split().strip('n')
for i in words:
for number in i:
number = number.rstrip('n')
if(number.isnumeric()):
print(number)
def get_median():
for median in number:
number = sorted
median = sorted (number) [len(number)//2]
print(median, len )
if __name__=='__main__':
sorting_file()
get_median()
get_median
函数有几个问题:
number
,但那是一个未定义的名字。number
重新定义为 sorted
,这是一个函数。 (这里没有任何排序)sorted(number)
与 sorted(sorted)
相同,这是没有意义的。sorted
调用可以工作,你不能索引它,因为它是一个迭代器,而不是一个列表。print(number, len)
会打印两个函数。我不明白这有什么用。median
的statistics
功能,所以您根本不需要get_median
。那么
sorting_file
也有问题:
.strip('n')
。列表没有这样的方法,而且无论如何你都希望字母 n
发生什么是一个谜for number in i
正在迭代单词的各个字符 (i
)。这没有用。这个词本身就是你感兴趣的。.rstrip('n')
似乎没有任何作用这里是考虑到以上几点的更正:
from statistics import median
def sorting_file():
with open('text.txt', 'r') as f:
for line in f:
return [int(i) for i in line.split() if i.isnumeric()]
res = median(sorting_file())
print(res)