Прехвърляне към съдържание


Снимка

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


  • Моля, влезте, за да отговорите
Няма отговори по тази тема

#1 tdf81bg

tdf81bg

    Потребител

  • Потребители
  • ПипПипПипПипПипПип
  • 28 мнения
  • Пол:Мъж
  • Живущ в:Пловдив
  • Интереси:Какво ли не :)

Публикувано: 22 May 2018 - 22:21

Здравейте, мъча се да си спретна едно изчисляващо скриптче да си улесня работата, а и да понауча нещо. Напълно начално ниво на 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 те си се обработват на екрана получавам една средна стойност и това е.

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






0 потребители четат тази тема

0 регистрирани потребители, 0 гости и 0 анонимни потребители