Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > Ошибка в коде !!!


Автор: Desha 4.5.2005, 20:21
Вся проблема в том что программу принимает автоматическая система которая вводит свои значения м смотрит на результаты если они совпадает то говорит что прально. Внизу выложу код, мне кажется идея и код верный но там чтото не учитанно, не знаю почему не принимает, кто может помогите разобратся плиз !!!

Язык программирования: PYTHON
Разработать функцию MeanDigits(const S:string):integer, определяющую среднее арифметическое цифр в строке S (дробную часть отбросить). С помощью данной функции вывести только такие строки из введенного набора, у которых среднее арифметическое цифр не меньше 5.
Вход
В первой строке входа дано количество строк N. Затем следуют N строк, по одной в каждой строке.
Выход
На выход напечатать строки результата, по одной в каждой строке.
Пример
Вход:

3
a12vc
a57sd
a54dff
Выход:

a57sd

Код

def MyFunc(x):
    a='123456789'
    sum=0
    n=0
    for ch in x:
      if a.find(ch)>=0:
        sum+=int(ch)
        n=n+1
    if n!=0:
     rez=sum/n
    else: rez=0
    return rez



l = []
a=input()
for w in range(a):
  x=raw_input()
  l.append(x)

for x in l:
  print MyFunc(x)
  if MyFunc(x) >= 5:
    print x


Автор: Desha 4.5.2005, 21:02
Vse spasibo !!! sama nashla oshibku smile
def MeanDigits(s):
count=0
sum=0
sr=0
s1='1234567890'
for i in range(len(s)):
if s1.find(s[i])>=0:
count+=int(s[i])
sum+=1
if sum!=0:
sr= count/sum
return sr

n= input()
l=[]
for i in range(n):
s=raw_input()
l.append(s)

for s in l:
if MeanDigits(s)>=5:
print s




v takom variante rabotaet smile)

Автор: Lich 5.5.2005, 03:17
можно проще:
Код

#!/usr/bin/python
# -*- coding:koi8-r -*-
import sys

def MeanDigits(s):
    digits=[int(i) for i in s if i.isdigit()]
    return (digits and sum(digits)/len(digits)) or 0

try:
    n=int(raw_input())
except ValueError:
    print >> sys.stderr, 'Invalid number!'
    sys.exit(1)

result=[]
for i in range(n):
    line=raw_input()
    if MeanDigits(line)>5:
        result.append(line)

print '\n'.join(result)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)