Jump to content

Python3 Програма за изчисление нужда от помощ


Препоръчан пост

Здравейте, мъча се да си спретна едно изчисляващо скриптче да си улесня работата, а и да понауча нещо. Напълно начално ниво на Python съм. Чета и се уча от Python Практическо програмиране на Денис Колисниченко.

Идеята е следната: Въвеждам n брой числа (принципно са 10, но в редки случаи може да са повече). Правя среден резултат, виждам колко са 10% от него, след което вадя две стойности. Първата е средният резултат + 10%, а втората е средният резултат - 10%. Тези две стойности ги правя като граница.

От тук нататък следва, това което не мога да направя.

Трябва от въведените n числа първоначално да премахна тези, които са над и под границата, след което на останалите числа да изведа средния резултат.

 

Първоначално направих следното:

import os 
os.system('cls' if os.name == 'nt' else 'clear')
print ('ВЪВЕДИ 10 ЧИСЛА:')
n1 = int(input(' 1: '))
n2 = int(input(' 2: '))
n3 = int(input(' 3: '))
n4 = int(input(' 4: '))
n5 = int(input(' 5: '))
n6 = int(input(' 6: '))
n7 = int(input(' 7: '))
n8 = int(input(' 8: '))
n9 = int(input(' 9: '))
n10 = int(input('10: '))
print ('')
n_avg = (n1+n2+n3+n4+n5+n6+n7+n8+n9+n10)/10.0
n_avg10 = n_avg * 0.1
n_avg_big = n_avg + n_avg10
n_avg_small = n_avg - n_avg10
print ('средният резултат е ', n_avg)
print ('')
print (' 10 % от ',n_avg)
print ('> ',round(n_avg_big,2))
print ('< ',round(n_avg_small,2))
print ('')
print (' - Проверка на числата -')
print ('')
if n1 > n_avg_big:
    print (n1,' е >')
    n1 = 0
elif n1 < n_avg_small:
    print (n1,' е <')
    n1 = 0
else:
    print (n1,' е в границите')
if n2 > n_avg_big:
    print (n2,' е >')
    n2 = 0
elif n2 < n_avg_small:
    print (n2,' е <')
    n2 = 0
else:
    print (n2,' е в границите')
if n3 > n_avg_big:
    print (n3,' е >')
    n3 = 0
elif n3 < n_avg_small:
    print (n3,' е <')
    n3 = 0
else:
    print (n3,' е в границите')
if n4 > n_avg_big:
    print (n4,' е >')
    n4 = 0
elif n4 < n_avg_small:
    print (n4,' е <')
    n4 = 0
else:
    print (n4,' е в границите')
if n5 > n_avg_big:
    print (n5,' е >')
    n5 = 0
elif n5 < n_avg_small:
    print (n5,' е <')
    n5 = 0
else:
    print (n5,' е в границите')
if n6 > n_avg_big:
    print (n6,' е >')
    n6 = 0
elif n6 < n_avg_small:
    print (n6,' е <')
    n6 = 0
else:
    print (n6,' е в границите')
if n7 > n_avg_big:
    print (n7,' е >')
    n7 = 0
elif n7 < n_avg_small:
    print (n7,' е <')
    n7 = 0
else:
    print (n7,' е в границите')
if n8 > n_avg_big:
    print (n8,' е >')
    n8 = 0
elif n8 < n_avg_small:
    print (n8,' е <')
    n8 = 0
else:
    print (n8,' е в границите')
if n9 > n_avg_big:
    print (n9,' е >')
    n9 = 0
elif n9 < n_avg_small:
    print (n9,' е <')
    n9 = 0
else:
    print (n9,' е в границите')
if n10 > n_avg_big:
    print (n10,' е >')
    n10 = 0
elif n10 < n_avg_small:
    print (n10,' е <')
    n10 = 0
else:
    print (n10,' е в границите')
print ('')
print ('Числа: ',n1 ,n2 , n3 , n4 , n5 , n6 , n7 , n8 , n9 , n10)
print ('')
zero_check = int(input('Колко от числата са 0? '))
if zero_check == 0:
   num_count = 10
if zero_check == 1:
   num_count = 9
   print ('')
   print ('Въведете числата отново без 0')
if zero_check == 2:
   num_count = 8
   print ('')
   print ('Въведете числата отново без 0')
if zero_check == 3:
   num_count = 7
   print ('')
   print ('Въведете числата отново безt 0')
if zero_check == 4:
   num_count = 6
   print ('')
   print ('Въведете числата отново без 0')
if zero_check == 5:
   num_count = 5
   print ('')
   print ('Въведете числата отново без 0')
if zero_check == 6:
   num_count = 4
   print ('')
   print ('Въведете числата отново без 0')
if zero_check == 7:
   num_count = 3
   print ('')
   print ('Въведете числата отново без 0')
if zero_check == 8:
   num_count = 2
   print ('')
   print ('Въведете числата отново без 0')
if zero_check == 9:
   num_count = 1
   print ('')
   print ('Въведете числата отново без 0')
if num_count == 10:
average = (n1+n2+n3+n4+n5+n6+n7+n8+n9+n10)/10
if num_count == 9:
    num_1 = int(input('1: '))
    num_2 = int(input('2: '))
    num_3 = int(input('3: '))
    num_4 = int(input('4: '))
    num_5 = int(input('5: '))
    num_6 = int(input('6: '))
    num_7 = int(input('7: '))
    num_8 = int(input('8: '))
    num_9 = int(input('9: '))
    average = (num_1+num_2+num_3+num_4+num_5+num_6+num_7+num_8+num_9)/9
if num_count == 8:
    num_1 = int(input('1: '))
    num_2 = int(input('2: '))
    num_3 = int(input('3: '))
    num_4 = int(input('4: '))
    num_5 = int(input('5: '))
    num_6 = int(input('6: '))
    num_7 = int(input('7: '))
    num_8 = int(input('8: '))
    average = (num_1+num_2+num_3+num_4+num_5+num_6+num_7+num_8)/8
if num_count == 7:
    num_1 = int(input('1: '))
    num_2 = int(input('2: '))
    num_3 = int(input('3: '))
    num_4 = int(input('4: '))
    num_5 = int(input('5: '))
    num_6 = int(input('6: '))
    num_7 = int(input('7: '))
    average = (num_1+num_2+num_3+num_4+num_5+num_6+num_7)/7
if num_count == 6:
    num_1 = int(input('1: '))
    num_2 = int(input('2: '))
    num_3 = int(input('3: '))
    num_4 = int(input('4: '))
    num_5 = int(input('5: '))
    num_6 = int(input('6: '))
    average = (num_1+num_2+num_3+num_4+num_5+num_6)/6
if num_count == 5:
    num_1 = int(input('1: '))
    num_2 = int(input('2: '))
    num_3 = int(input('3: '))
    num_4 = int(input('4: '))
    num_5 = int(input('5: '))
    average = (num_1+num_2+num_3+num_4+num_5)/5
if num_count == 4:
    num_1 = int(input('1: '))
    num_2 = int(input('2: '))
    num_3 = int(input('3: '))
    num_4 = int(input('4: '))
    average = (num_1+num_2+num_3+num_4)/4
if num_count == 3:
    num_1 = int(input('1: '))
    num_2 = int(input('2: '))
    num_3 = int(input('3: '))
    average = (num_1+num_2+num_3)/3
if num_count == 2:
    num_1 = int(input('1: '))
    num_2 = int(input('2: '))
    average = (num_1+num_2)/2
if num_count == 1:
    print ('грешка')
    average = 0
print ('')
print ('Среден резултат след корекция +/- 10% е ',round(average,1))
input('произволен клавиш за изход')
quit()

Тук въвеждам 10 числа, правя среден резултат, вадя си 10% след което проверявам всяко едно от 10-те числа и ако е извън границите му давам стойност 0, след това извеждам повторно 10-те резултата и ако има такива извън границите те се извеждат със стойност 0. След това въвеждам повторно резултатите без нулите и правя среден резултат. Принципно си решавам нещата, но ми се иска да бъде по-добре направено.

 

Започнах наново и стигнах до тук

print('Въведете числата, отделени със запетая без на последното число')
n=input('Числа: ')
x=n.split(',')
z=[]
for i in x: z+= [int(i)] 
print(z)
avg = sum(z)/len(z)
print(round(avg,1))
avg10 = avg * 0.1
avg_big = avg + avg10
avg_small = avg - avg10
print('>',avg_big)
print('<',avg_small)
Нямам идея, как да проверя n числа. (те обикновено са 10) и в такъв случай мога да ги проверя пак отделно по следния начин:
if z[0] > avg_big:
    print(z[0],'е >')
elif z[0] < avg_small:
    print(z[0],'е <')
else:
    print(z[0],'е в границите')

Идеята ми е да направя така, че да не въвеждам числата втори път, да си се проверяват спрямо границата (+/- 10%) и да вади средният резултат само на числата в границата, като другите ги елиминира. Нямам нужда да виждам дали всяко число е в границите, направил съм го така просто да се вижда иначе ми трябва просто да извежда стойността на средният резултат след обработката т.е. вкарвам n числа или 10 те си се обработват на екрана получавам една средна стойност и това е.

За жалост не мога да разбера как да го направя.

Link to comment
Сподели другаде

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гост
Отговори на тази тема

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   Не можете да качите директно снимка. Качете или добавете изображението от линк (URL)

Loading...
×
×
  • Създай ново...