为什么我不能运行我的中位数程序,我真的不明白

2024-09-30 22:25:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我真的不知道我做了两个while循环,但是当我运行它时,它只显示了第一个循环

do_caculation = True
while(do_caculation):
        while(True):
                stat_number_count = 0
                stat_number_sum = 0
                stat_number_average = 0
                stat_number_maximum = 0
                stat_number_minimum = 0
                state_number_range = 0

                try:
                    stat_number_name= input("What is the name of the file: ")
                    stat_number = open(stat_number_name,"r")
                    raw = stat_number.readlines()
                    raws = []

                    for number in raw:
                        raws.append(int(number))        

                    stat_number_count = sum(raws)
                    stat_number_sum = len(raws)
                    stat_number_maximum = max(raws)
                    stat_number_minimum = min(raws)

                    stat_number_range = stat_number_maximum - stat_number_minimum 
                    stat_number_average = stat_number_count/stat_number_sum









                except Exception as error:
                    print("An error occurred reading", stat_number_name)

                else:
                    print("File name:", stat_number_name)
                    print("Sum:", stat_number_sum)
                    print("Count:", stat_number_count)
                    print("Average:", stat_number_average)
                    print("Maximum:", stat_number_maximum)
                    print("Minimum:", stat_number_minimum)
                    print("Range:", stat_number_range)








        while(True):
                def median(raws):
                    n = len(raws)
                if n < 1:
                        print ("XD")
                if n % 2 == 1:
                        SB = sorted(raws)[n//2]
                        print (SB)
                else:
                    print (sum(sorted(raws)[n//2-1:n//2+1])/2.0

Tags: nametruenumbercountrangedostatsum
1条回答
网友
1楼 · 发布于 2024-09-30 22:25:37

永远不会退出第一个while循环,因此永远不会执行第二个循环

从这段代码看来,您并没有真正理解while循环的作用。循环中的代码块将继续运行,直到您给出的条件不再为真。你用的是

while(True)

不可能是假的。因此,除非被break语句或异常打断,否则循环将始终运行—在本例中,异常不是一个选项,因为如果发生异常,您将捕获它并将字符串打印到控制台

你需要有一些方法来摆脱你的while循环。我建议把它完全去掉——这里似乎没有必要。或者可以将循环的条件从True更改为最终可能为false的条件。或者可以在循环中放入break语句。或者其他一些可能性,但你明白我的意思

相关问题 更多 >