2015-03-03 133 views
0

我有一个学校的工作,需要找到平均和最小和最大,但我不知道如何找到最小和最大,老师说我们不能使用python中建立最小最大值,也没有排序。我已经得到了平均水平,只需要做最小和最大,这是我的代码。如何在Python中找到最小值和最大值?

import random 
import math 
n = 0 
with open("numbers2.txt", 'w') as f: 
for x in range(random.randrange(10,20)): 
    numbers = random.randint(1,50) #random value between 1 to 50 
    f.write(str(numbers) + "\n") 
    print(numbers) 

f = open("numbers2.txt", 'r') 
fr = f.read() 
fs = fr.split() 
length = len(fs) 
sum = 0 
for line in fs: 
    line = line.strip() 
    number = int(line) 
    sum += number  
print("The average is :" , sum/length) 
+1

提示:你需要将一个变量与数字进行比较。 '如果变量<数字:' – Iftah 2015-03-03 02:19:02

+0

虐待尝试这样做。 – yahoo911emil 2015-03-03 02:24:22

回答

4

将以下行添加到您的代码中。

fs = fr.split() 
print(min(int(i) for i in fs)) 
print(max(int(i) for i in fs)) 

更新:

min_num = int(fs[0])    # Fetches the first item from the list and convert the type to `int` and then it assigns the int value to `min_num` variable. 
max_num = int(fs[0])    # Fetches the first item from the list and convert the type to `int` and then it assigns the int value to `max_num` variable. 
for number in fs[1:]:    # iterate over all the items in the list from second element. 
    if int(number) > max_num:  # it converts the datatype of each element to int and then it check with the `max_num` variable. 
     max_num = int(number)  # If the number is greater than max_num then it assign the number back to the max_num 
    if int(number) < min_num: 
     min_num = int(number) 
print(max_num) 
print(min_num) 

如果存在一个空行其间那么上面将无法正常工作。你需要把代码放到try块中去。

try: 
    min_num = int(fs[0]) 
    max_num = int(fs[0]) 
    for number in fs[1:]: 

     if int(number) > max_num: 
      max_num = int(number) 

     if int(number) < min_num: 
      min_num = int(number) 
except ValueError: 
    pass    

print(max_num) 
print(min_num) 
+0

@Aavall但是这个答案仍然有好处,作为替代或黄金标准来比较他们的结果。 – Marcin 2015-03-03 02:22:32

+0

是的,我的老师不允许我使用内置的 – yahoo911emil 2015-03-03 02:23:25

+0

@ yahoo911emil检查我的更新。 – 2015-03-03 02:48:54

1

也许你可以通过搜索到号码列表找到最大和最小:

numbers=[1,2,6,5,3,6] 

max_num=numbers[0] 
min_num=numbers[0] 
for number in numbers: 
    if number > max_num: 
     max_num = number 
    if number < min_num: 
     min_num = number 

print max_num 
print min_num 
+0

我试过这样做,但没有使用我使用的数字,它似乎并没有工作,我的意思是它的作品,但它打印出不同的结果 – yahoo911emil 2015-03-03 02:35:55

+0

检查中间结果。您的分割功能是否按照您期望的方式工作? – 2015-03-03 02:49:00

+0

您需要将字符串的数据类型转换为int。看到我的答案。 – 2015-03-03 02:49:43

0

如果你学会如何思考这些类型的问题,这都属于应该到位。

  • 如果您没有号码,最小/最大值是多少?
  • 如果您有一个号码, 最小/最大值是多少?
  • 如果您有n个号码,其中n大于 1,最小值和最大值是多少?
相关问题