1

Тема: не працює цикл For

не працює цикл For, або я щось не правильно роблю. Help!

# ПОШУК і підрахунок кількості цифр в числі:
num=int(input("Введіть натуральне число: "))
# Робимо цикл, що підраховує кількість цифр:
for i in range(num):
    n0 = 0
    if i==0:
        n0=n0+1
print("В числі",num, "Є цифра 0 в кількості", n0)

результат:

C:\Users\HP\PycharmProjects\pythonProject\venv\Scripts\python.exe C:\Users\HP\PycharmProjects\pythonProject\main.py
Введіть натуральне число: 890890
В числі 890890 Є цифра 0 в кількості 0

Process finished with exit code 0

2

Re: не працює цикл For

for i in range(num):

означає, що i набуде значення 0, потім 1, потім 2 і т.д. до досягнення числа num (невключно), тобто останнє значення i буде 890889.

n0 = 0

знаходиться в циклі, тобто цей рядок буде виконано в кожній ітерації. Попереднє значення буде знищене. Вам треба винести цей рядок перед циклом.
А в цілому вам треба перетворити num на стрічку і порівнювати i з символом '0'.

Подякували: Alex411

3

Re: не працює цикл For

koala написав:
for i in range(num):

означає, що i набуде значення 0, потім 1, потім 2 і т.д. до досягнення числа num (невключно), тобто останнє значення i буде 890889.

n0 = 0

знаходиться в циклі, тобто цей рядок буде виконано в кожній ітерації. Попереднє значення буде знищене. Вам треба винести цей рядок перед циклом.
А в цілому вам треба перетворити num на стрічку і порівнювати i з символом '0'.

4

Re: не працює цикл For

Дякую, що відгукнулися.
Якшо винести вище за цикл n=0, то теж нічого не працює.
а з символами я вже робила і так працює....

ось мій код з символами:

# ПОШУК і підрахунок кількості цифр в числі:
mynumber=str(input("Введіть натуральне число: "))
# Символи для цифр:
symbs=['0','1','2','3','4','5','6','7','8','9']
print("Шукаємо і підраховуємо кількість цифр в введеному числі:",symbs)
# Пошук цифр:
for s in symbs:
    # Якщо цифру знайдено:
    if s in mynumber:
       k=mynumber.count(s)
       print ("В числі",mynumber, "Є цифра '"+s+"'", "в кількості", k)
       # Якщо цифри не має:
    else:
        print("В числі",mynumber, "НЕ МАЄ цифри '"+s+"'")
# Останнє повідомлення програми:
print ("Підрахунок завершено")

%Run 'урок10_кільСимвВряд(+).py'
Введіть натуральне число: 890890890
Шукаємо і підраховуємо кількість цифр в введеному числі: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
В числі 890890890 Є цифра '0' в кількості 3
В числі 890890890 НЕ МАЄ цифри '1'
В числі 890890890 НЕ МАЄ цифри '2'
В числі 890890890 НЕ МАЄ цифри '3'
В числі 890890890 НЕ МАЄ цифри '4'
В числі 890890890 НЕ МАЄ цифри '5'
В числі 890890890 НЕ МАЄ цифри '6'
В числі 890890890 НЕ МАЄ цифри '7'
В числі 890890890 Є цифра '8' в кількості 3
В числі 890890890 Є цифра '9' в кількості 3
Підрахунок завершено
>>>


Але, я хотіла спробувати, чи можна зробити такий результат для значення int, і зробити підрахунок так, щоб не використовувати функцію count._____Але вже на думку спадає, що мабуть ціле число типу int сприймається Python як цілісний об"єкт, і можливо, що те що я хотіла зробити , може, це просто не можливо.

5 Востаннє редагувалося koala (04.02.2023 22:06:15)

Re: не працює цикл For

Alex41 написав:

то теж нічого не працює.

Будь ласка, давайте ПОЗИТИВНИЙ опис проблеми. Не пишіть, чого НЕ відбувається, пишіть, що ви очікуєте і що відбувається натомість. Якщо дійсно "нічого не працює", то, схоже, у вас просто електрику вимкнули, треба дочекатися, коли увімкнуть.

Alex41 написав:

Але вже на думку спадає, що мабуть ціле число типу int сприймається Python як цілісний об"єкт, і можливо, що те що я хотіла зробити , може, це просто не можливо.

Так, число - це цілісний об'єкт, але це саме число. Числа можна ділити і знаходити остачу (операція % ). Зокрема, остання цифра числа - це остача від ділення на 10, а число без останньої цифри - це поділене націло (//) на 10:

n = 123456
last_digit = n % 10
rest = n // 10
print(last_digit, rest) # виведе 6 12345

На цьому можна побудувати підрахунок цифр - і, власне, перетворення числа на стрічку теж на цьому працює.