Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2022, 22:05   #1
Canavaros
Пользователь
 
Регистрация: 26.03.2016
Сообщений: 20
По умолчанию Проверить простой код

Ребята, есть задача школьная. (прикрепил)
Надо написать именно на языке Python
Нашел в интернете на разных языках, в том числе вроде и на питоне.
Можете проверить - правильно ли код?
Код:
def DigitCountSum(k):
s=0
c=0
for i in range(1,k+1):
c+=1
s+=i
print(«Counter:»,c)
print(«Sum:»,s)
print(«>>>>>>>>>>»)
for i in range(5):
k=int(input(«K:»))
DigitCountSum(k)
Изображения
Тип файла: jpg питон.jpg (57.2 Кб, 2 просмотров)
Canavaros вне форума Ответить с цитированием
Старый 23.05.2022, 22:30   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Без отступов питон не питон. Предположим, что отступы будут расставлены. В задании нужно обработать цифры самого числа K, а в коде вы обрабатываете числа от 1 до K. Вместо вывода на экран делал бы возврат кортежа, а уж в месте вызова функции делал бы печать (или передавать в качестве параметров изменяемые объекты, например, списки, и класть туда ответ).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 23.05.2022, 22:58   #3
Canavaros
Пользователь
 
Регистрация: 26.03.2016
Сообщений: 20
По умолчанию

Если не сложно, сможете подправить пожалуйста?

Вот еще такой вариант:


Цитата:
def DigitCountSum(K,Result):
s = str(K)
n = len(s)
_sum = 0
for i in range(n):
_sum += int(s[i])
Result['C'] = n
Result['S'] = _sum


R = {'C' : None, 'S' : None}
for i in range(5):
K = random.randrange(1,10000)
print("Число ",i+1,": ", K)
DigitCountSum(K, R)
print('Количество цифр = ', R['C'])
print('Сумма цифр = ', R['S'])
print()
Canavaros вне форума Ответить с цитированием
Старый 23.05.2022, 23:11   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

В последнем варианте не хватает "import random" перед кодом и отступов. Если я расставлю за вас отступы, то чему же вы научитесь? Попробуйте разные варианты расстановки отступов, позапускайте пока интерпретатор не перестанет жаловаться и не выдаст верный вывод.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 24.05.2022, 10:40   #5
Canavaros
Пользователь
 
Регистрация: 26.03.2016
Сообщений: 20
По умолчанию

так нормально?

Код:
import random

def DigitCountSum(K,Result):
    s = str(K)
    n = len(s)
    _sum = 0
    for i in range(n):
        _sum += int(s[i])
    Result['C'] = n
    Result['S'] = _sum
        
    
R = {'C' : None, 'S' : None}
for i in range(5):
    K = random.randrange(1,10000)
    print("Число ",i+1,": ", K)
    DigitCountSum(K, R)
    print('Количество цифр = ', R['C'])
    print('Сумма цифр = ', R['S'])
    print()
Canavaros вне форума Ответить с цитированием
Старый 24.05.2022, 22:35   #6
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Мне не очень понятно задание в части "описать процедуру DigitCountSum(K,C,S)" в части применимости к терминам Python.
Форма этого задания ближе к Pascal, т.к. в Python подпрограммы (процедуры и функции) - суть функции.
Но если следовать требованиям задания, то и возвращать через параметры надо 2-а значения, а не одно.
Код:
def DigitCountSum(K,Result):
Т.е., должно быть так:
Код:
def DigitCountSum(K,C, S):
    s = str(K)
    n = len(s)
    _sum = 0
    for i in range(n):
        _sum += int(s[i])
    C = n
    S = _sum
А если допускаются модификации, то можно и так:
Код:
def DigitCountSum(K):
    s = str(K)
    _sum = sum([int(i) for i in list(s)]) # Строку в список,
                                          # элементы которого суммируем 
    return len(s), _sum
Тогда вызов функции будет таким:
Код:
m = DigitCountSum(K)
print('Количество цифр = ', m[0])
print('Сумма цифр = ', m[1])
print()
PS: Не проверял. Могут быть ошибки.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 24.05.2022, 22:47   #7
Canavaros
Пользователь
 
Регистрация: 26.03.2016
Сообщений: 20
По умолчанию

ViktorR

я сам особо не понимаю пайзн, в школе задали Сколько искал, да, в осноном только на паскале.

Теперь вот так правильно будет ?

Код:
import random

def DigitCountSum(K,C, S):
    s = str(K)
    n = len(s)
    _sum = 0
    for i in range(n):
        _sum += int(s[i])
    C = n
    S = _sum
        
    
R = {'C' : None, 'S' : None}
for i in range(5):
    K = random.randrange(1,10000)
    print("Число ",i+1,": ", K)
    m = DigitCountSum(K)
    print('Количество цифр = ', m[0])
    print('Сумма цифр = ', m[1])
    print()
Canavaros вне форума Ответить с цитированием
Старый 25.05.2022, 08:59   #8
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Рекомендую найти книжку и там прочитать, например, как оформляются функции.
Если данные возвращаются через параметры, в вашем случае C и S, то эти параметры и надо использовать.
В таком случае вызов подобен вызову процедур в Паскале.
Т.е.:
Код:
DigitCountSum(K,C, S)
Тут K - входной параметр, а C и S выходные (через них возвращаются значения).
Если вызов строить по принципу:
Код:
m = DigitCountSum(K)
то функция должна завершаться оператором
Код:
return C,S
В этом случае переменная m получает оба значения из функции, которые оформлены в виде кортежа.
Доступ к элементам кортежа может быть выполнен через индексацию.
m[0] - первый элемент, m[1] - следующий.

PS: Найди книжку, например, автор Лутц: Изучаем Python или Программирование на Python.
И почитай хотя бы Вики, чтобы не писать: "пайзн".
Читаем - Пайсон, а говорим Питон
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 25.05.2022, 09:15   #9
Canavaros
Пользователь
 
Регистрация: 26.03.2016
Сообщений: 20
По умолчанию

ViktorR

да все бы ничего, но я никакой не программист ))) попросили помочь человеку, в школе сдавать эту хрень.
Может тогда в итоге покажете как должен выглядеть окончательный код?
Canavaros вне форума Ответить с цитированием
Старый 25.05.2022, 10:46   #10
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Canavaros: Используйте онлайн компилятор, если не хотите установить локальный на компьютер. Там наглядно можно увидеть все в динамике по мере набора текста.
Код:
import random

def DigitCountSum(K, C, S):
    string = str(K)
    C[0] = len(string)
    S[0] = 0
    for i in range(C[0]):
        S[0] += int(string[i])
    return C[0], S[0]

C = [0]
S = [0]
for i in range(5):
    K = random.randrange(1,10000)
    DigitCountSum(K, C, S)
    print("Число ", i + 1, " = ", K,
          '\nКоличество цифр = ', C[0],
          '\nСумма цифр = ', S[0], '\n')
macomics вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевести код из Pascal в C++ Lodbrock Помощь студентам 4 21.05.2014 13:08
Перевести код с Pascal на C++ Sbobukh Помощь студентам 1 17.12.2013 19:28
Перевести с Pascal в C++ Евгений Баранников Паскаль, Turbo Pascal, PascalABC.NET 6 16.05.2013 09:28
Перевести на С++ (Pascal) spinogryz_ua Помощь студентам 4 23.11.2012 12:04
Перевести код с Pascal на C++ Aaaaaa111 Помощь студентам 1 22.02.2012 14:28