JZ911
Ноя. 2, 2017 13:09:00
Есть строка с символами f98neroi4nr0c3n30irn03ien3c0rfekdno400wenwkowe00koijn35pijnp46ij7k5j78p3kj546p465jnpoj35po6j345" нужно создать функцию которая работает в 4 случаях
1 если длина строки в диапазоне 30-50 принтует длину (количество букв и цифр)
2 если длина меньше 30 принтует сумму всех чисел и отдельно строку без цифр только буквы
3 если длина больше 50 придумать самому
4 и 3 верхние функции поместить в одну
PEHDOM
Ноя. 2, 2017 13:19:37
А в чем проблема? не знаете как создать функцию, или как узнать длинну строки, или не проходили условный оператор if?
JZ911
Ноя. 2, 2017 13:26:14
я немогу понять как этот скрипт сделать
JZ911
Ноя. 2, 2017 13:27:06
вот есть такой вариант но он не работает
def foo(input):
if len(input) > 50:
print('Pridumal sam')
elif len(input) < 30:
for ch in input:
sum = 0
new_str = ''
if ch.isdigit:
sum += int(ch)
else:
new_str += ch
print(sum)
print(new_str)
else:
print(len(input)
PEHDOM
Ноя. 2, 2017 14:25:00
Вот отлично, можете если захотите, но есть пару НО:
1. input и sum это встроенные функции пайтона, лучше не использовать такие имена для переменных.
2. isdigit это метод, соответственно его вызывать нужно.
3. обнуление переменных нужно делать до цикла
в итоге получаем:
def foo(in_str):
if len(in_str) > 50:
print('Pridumal sam')
elif len(in_str) < 30:
s = 0
new_str = ''
for ch in in_str:
if ch.isdigit():
s += int(ch)
else:
new_str += ch
print(s)
print(new_str)
else:
print(len(in_str))
s = 'f98neroi4nr0c3n30irn03ien3c0rfekdno400wenwkowe00koijn35pijnp46ij7k5j78p3kj546p465jnpoj35po6j345'
foo(s)
s = 'f98neroi4nr0c3n30irn03ien3c0rfekdno400we'
foo(s)
s = 'f98nero'
foo(s)
>>>
Pridumal sam
40
17
fnero
>>>
JZ911
Ноя. 2, 2017 15:13:53
разъясните функция _def foo(in_str)_ проверяет строки и числа?
PEHDOM
Ноя. 2, 2017 15:24:58
def foo это обьявление нашей функции которую мы пишем сами. (in_str) аргумент который принимает функция.
А дальше она делает все то что вы написали в ней. Если длинна того что передали более 50 то делаем согласно пункту 3 в задании, если меньше 30 - пункту 2 , иначе пункту 1.
Или нужно было для каждого пункта задания написать отдельную функцию, и потом вызывать их из 4-й?
JZ911
Ноя. 2, 2017 15:39:23
как сделать чтобы ввод был с клавы и можно было разделить сколько букв, а сколько цыфр?
JZ911
Ноя. 2, 2017 15:50:06
я понял что это аргумент но мне нужно сделать описание этой функции, я так понимаю этот аргумент это принятие цифр и букв?
PEHDOM
Ноя. 2, 2017 15:52:59
JZ911
как сделать чтобы ввод был с клавы
Для ввода с клавиатуры есть функция input()
s = input('Введите строку:')
foo(s)
JZ911
можно было разделить сколько букв, а сколько цыфр?
в смысле?