61

Re: Простенькі програми для новачків. (ТІЛЬКИ ДЛЯ НОВАЧКІВ)

Irbis написав:
while (True):
    if (condition):
        print(...)

Ой ні. *FACEPALM*

В такому випадку умова має бути в while:

while (condition):
    print(...)

62

Re: Простенькі програми для новачків. (ТІЛЬКИ ДЛЯ НОВАЧКІВ)

З книги Віктора Трофімова я вивчаю мову Python. Ось цю гру я розкладаю на шматочки і розбираюсь що до чого. Прошу зіграти в неї, та порадити що потрібно змінити, чи додати, щоб я міг попрактикуватися.
    ВГАДАЙ ЧИСЛО


Прихований текст
import random      #запускаєм генерацію випадкових чисел

lowDigit   = 10    #нижня границя чисел
highDigit  = 50    #верхня границя чисел
digit      = 0     #загадане комп'ютером число

countInput = 0     #Кількість спроб вгадати
win        = False #Вгадав число?
playGame   = True  #Гра продовжується?
x          = 0     #число яке вводить користувач
startScore = 100   #початкова кількість очків
score      = 0     #текуща кількість очків
maxScore   = 0     #максимальна кількість очків

while (playGame):  #поки playGame is True
    digit = random.randint(lowDigit, highDigit) #digit отримує рандомне число 
    print('-' * 50)
    countInput = 0 
    score = startScore #початкова кількість очків 100
    print('компютер загадав число, спробуйте відгадати ')
    while (not win and score > 0):  #поки немає перемоги або кількість очків не є менша 0, цикл виконується
        print('-' * 50)
        print(f'Залишилось очків: {score}')
        print(f'Рекорд: {maxScore}')

        x = ''   #скидуємо для умови в while
        while (not x.isdigit()):      #контроль, щоб користувач ввів лише число
            x = input(f'Введіть число від {lowDigit} до {highDigit}: ')
            if (not x.isdigit()):
                print('.' * 27 + 'Введіть, будь-ласка, число.')

        x = int(x)   #перетворення в ціле число
        if(x == digit): #якщо користувач вів числе те що загадане, то
            win = True  #перемога
        else:            #інакше, продовжуєм, і видаємо підказки
            length = abs(x - digit)
            if (length < 3):
                print('Дуже гаряче!')
            elif(length < 5):
                print('Гаряче!')
            elif(length < 10):
                print('Тепло!')
            elif(length < 15):
                print('Прохолодно!')
            elif(length < 20):
                print('Холодно!')
            else:
                print('Вічна мерзлота')

            if(countInput == 7):
                score -= 10     #зменшуємо очки (плата за підказки) в залежності від кількості спроб
                if (digit % 2 == 0):
                    print('Число парне')
                else:
                    print('Число непарне')
            elif(countInput == 6):
                score -= 8
                if (digit % 3 == 0):
                    print('Число ділиться на 3 без остачі')
                else:
                    print('Число не ділиться на 3 без остачі')
            elif(countInput == 5):
                score -= 4
                if (digit % 4 == 0):
                    print('Число ділиться на 4 без остачі')
                else:
                    print('Число не ділиться на 4 без остачі')
            elif(countInput > 2 and countInput < 5):
                score -= 2
                if (x > digit):
                    print('Загадане число менше вашого')
                else:
                    print('Загадане число більше вашого')
            score -= 5  #плата за кожну спробу + додаткова в залежності від кількості спроб
        countInput += 1 #кількість спроб, +1 за кожну спробу

    print('*' * 40)
    if (x == digit): #якщо перемога,то вітаємо
        print('Перемога! Вітаю!')
    else:            #інакше повідомляємо про поразку 
        print('Ой! У Вас закінчились очки. Ви програли :( ')

    if(input('Enter - зіграти ще, 0 + Enter - вийти') == '0'): #запитуєм користувача що робити  далі
        playGame = False #граєм ще
    else:
        win = False      #інакше виходимо з гри

    if(score > maxScore):  #вираховуєм максимальну кількість очків
        maxScore = score

print('*' * 60)
print('''Дякую, що зіграли в цю гру!
Повертайтесь швидше! Буду чекати з нетерпінням!
P.S. Ви добре тримались :) ''')

#кінець

63

Re: Простенькі програми для новачків. (ТІЛЬКИ ДЛЯ НОВАЧКІВ)

я б з обережністю ставився до російськомовних видань. Зазвичай вони занизької якості. особливо коли автор не відрізняє число від цифри

Подякували: koala, Irbis, Eff1c3

64

Re: Простенькі програми для новачків. (ТІЛЬКИ ДЛЯ НОВАЧКІВ)

Загорніть це все у функції (гадаю, з класами ви ще не розбиралися).
Ну і дрібні зауваження:
- назви змінних та функцій краще робити snake_case.
- назви констант заведено писати UPPER_CASE.
- булеві змінні краще називати на is_ (is_playing, наприклад. Чи, навпаки, is_exit_choosen).
- неправильний коментар гірший за відсутній.

        playGame = False #граєм ще
    else:
        win = False      #інакше виходимо з гри
Подякували: Irbis1

65

Re: Простенькі програми для новачків. (ТІЛЬКИ ДЛЯ НОВАЧКІВ)

ur_naz написав:

я б з обережністю ставився до російськомовних видань. Зазвичай вони занизької якості. особливо коли автор не відрізняє число від цифри

В англомовних джерелах не відрізняють систему цифр (римську, арабську, грецьку, вавилонську і т.п.) від числівників — і те, й інше йде як numerals. Тому, наприклад, у статті Hebrew numerals описуються і числівники в івриті, і єврейські цифри-літери — хоча одне стосується лінгвістики, а друге — скоріш, письма й математики.

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

66

Re: Простенькі програми для новачків. (ТІЛЬКИ ДЛЯ НОВАЧКІВ)

P.Y. написав:
ur_naz написав:

я б з обережністю ставився до російськомовних видань. Зазвичай вони занизької якості. особливо коли автор не відрізняє число від цифри

В англомовних джерелах не відрізняють систему цифр (римську, арабську, грецьку, вавилонську і т.п.) від числівників — і те, й інше йде як numerals. Тому, наприклад, у статті Hebrew numerals описуються і числівники в івриті, і єврейські цифри-літери — хоча одне стосується лінгвістики, а друге — скоріш, письма й математики.

Щодо numerals, то можете прочитати значення цього слова: https://en.wikipedia.org/wiki/Numeral
Найточніше українською це буде "запис чисел" - і сюди входять і цифри (digits), і числівники (number word, хоча в лінгвістиці використовується і numeral).
Але в і в російській, і в англійській мовах розрізняють числа і цифри.

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

67 Востаннє редагувалося P.Y. (26.03.2020 15:11:48)

Re: Простенькі програми для новачків. (ТІЛЬКИ ДЛЯ НОВАЧКІВ)

Найточніше українською це буде "запис чисел"

Якщо йдеться про усну чи безписемну мову, то вже не «запис».
Крім того, зверніть увагу, «числівники» стосуються мови, а «цифри» — системи письма (і, в загальному випадку, одні й ті ж цифри можуть використовуватись у поєднанні з різними писемностями, одна й та ж писемність може використовуватись для різних мов, одна й та ж мова може використовувати декілька писемностей  і т.п.).

Подякували: koala, Irbis2

68 Востаннє редагувалося plusxx (26.03.2020 16:43:55)

Re: Простенькі програми для новачків. (ТІЛЬКИ ДЛЯ НОВАЧКІВ)

Irbis написав:

З книги Віктора Трофімова я вивчаю мову Python. Ось цю гру я розкладаю на шматочки і розбираюсь що до чого. Прошу зіграти в неї, та порадити що потрібно змінити, чи додати, щоб я міг попрактикуватися.
    ВГАДАЙ ЧИСЛО


Прихований текст
import random      #запускаєм генерацію випадкових чисел

lowDigit   = 10    #нижня границя чисел
highDigit  = 50    #верхня границя чисел
digit      = 0     #загадане комп'ютером число

countInput = 0     #Кількість спроб вгадати
win        = False #Вгадав число?
playGame   = True  #Гра продовжується?
x          = 0     #число яке вводить користувач
startScore = 100   #початкова кількість очків
score      = 0     #текуща кількість очків
maxScore   = 0     #максимальна кількість очків

while (playGame):  #поки playGame is True
    digit = random.randint(lowDigit, highDigit) #digit отримує рандомне число 
    print('-' * 50)
    countInput = 0 
    score = startScore #початкова кількість очків 100
    print('компютер загадав число, спробуйте відгадати ')
    while (not win and score > 0):  #поки немає перемоги або кількість очків не є менша 0, цикл виконується
        print('-' * 50)
        print(f'Залишилось очків: {score}')
        print(f'Рекорд: {maxScore}')

        x = ''   #скидуємо для умови в while
        while (not x.isdigit()):      #контроль, щоб користувач ввів лише число
            x = input(f'Введіть число від {lowDigit} до {highDigit}: ')
            if (not x.isdigit()):
                print('.' * 27 + 'Введіть, будь-ласка, число.')

        x = int(x)   #перетворення в ціле число
        if(x == digit): #якщо користувач вів числе те що загадане, то
            win = True  #перемога
        else:            #інакше, продовжуєм, і видаємо підказки
            length = abs(x - digit)
            if (length < 3):
                print('Дуже гаряче!')
            elif(length < 5):
                print('Гаряче!')
            elif(length < 10):
                print('Тепло!')
            elif(length < 15):
                print('Прохолодно!')
            elif(length < 20):
                print('Холодно!')
            else:
                print('Вічна мерзлота')

            if(countInput == 7):
                score -= 10     #зменшуємо очки (плата за підказки) в залежності від кількості спроб
                if (digit % 2 == 0):
                    print('Число парне')
                else:
                    print('Число непарне')
            elif(countInput == 6):
                score -= 8
                if (digit % 3 == 0):
                    print('Число ділиться на 3 без остачі')
                else:
                    print('Число не ділиться на 3 без остачі')
            elif(countInput == 5):
                score -= 4
                if (digit % 4 == 0):
                    print('Число ділиться на 4 без остачі')
                else:
                    print('Число не ділиться на 4 без остачі')
            elif(countInput > 2 and countInput < 5):
                score -= 2
                if (x > digit):
                    print('Загадане число менше вашого')
                else:
                    print('Загадане число більше вашого')
            score -= 5  #плата за кожну спробу + додаткова в залежності від кількості спроб
        countInput += 1 #кількість спроб, +1 за кожну спробу

    print('*' * 40)
    if (x == digit): #якщо перемога,то вітаємо
        print('Перемога! Вітаю!')
    else:            #інакше повідомляємо про поразку 
        print('Ой! У Вас закінчились очки. Ви програли :( ')

    if(input('Enter - зіграти ще, 0 + Enter - вийти') == '0'): #запитуєм користувача що робити  далі
        playGame = False #граєм ще
    else:
        win = False      #інакше виходимо з гри

    if(score > maxScore):  #вираховуєм максимальну кількість очків
        maxScore = score

print('*' * 60)
print('''Дякую, що зіграли в цю гру!
Повертайтесь швидше! Буду чекати з нетерпінням!
P.S. Ви добре тримались :) ''')

#кінець

Я б додав масив слів і пробував загадувати слова, кольори або назви нот.

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

69

Re: Простенькі програми для новачків. (ТІЛЬКИ ДЛЯ НОВАЧКІВ)

дякую за зауваження, буду вчитись

70

Re: Простенькі програми для новачків. (ТІЛЬКИ ДЛЯ НОВАЧКІВ)

Начебто більшість проблем виправив. Сподобалась ідея з масивом слів, хочу загадувати марки авто


Прихований текст
import random       #запускаєм генерацію випадкових чисел

LOW_NUMBER = 10     #нижня границя чисел
HIGH_NUMBER = 50    #верхня границя чисел
number  = 0         #загадане комп'ютером число

count_input = 0     #Кількість спроб вгадати
win = False         #Поки користувач не вгадає цикл продовжуватиметься
is_playing = True   #Для того, щоб цикл міг продовжуватися
x = 0               #число яке вводить користувач
START_SCORE = 100   #початкова кількість очків
score  = 0          #текуща кількість очків
max_score = 0       #максимальна кількість очків

while (is_playing):  #поки is_playing is True цикл продовжуватиметься
    number = random.randint(LOW_NUMBER, HIGH_NUMBER) #number отримує рандомне число 
    print('-' * 50)
    count_input = 0 
    score = START_SCORE  #початкова кількість очків 100
    print('компютер загадав число, спробуйте відгадати ')
    while (not win and score > 0):  #поки немає перемоги або кількість очків не є менша 0, цикл виконується
        print('-' * 50)
        print(f'Залишилось очків: {score}')
        print(f'Рекорд: {max_score}')

        x = ''   #скидуємо для умови в while
        while (not x.isdigit()):      #контроль, щоб користувач ввів лише число
            x = input(f'Введіть число від {LOW_NUMBER} до {HIGH_NUMBER}: ')
            if (not x.isdigit()):
                print('.' * 27 + 'Введіть, будь-ласка, число.')

        x = int(x)       #перетворення в ціле число
        if(x == number): #якщо користувач ввів число те що загадане, то
            win = True   #перемога
        else:            #інакше, продовжуєм, і виводимо підказки
            length = abs(x - number)
            if (length < 3):
                print('Дуже гаряче!')
            elif(length < 5):
                print('Гаряче!')
            elif(length < 10):
                print('Тепло!')
            elif(length < 15):
                print('Прохолодно!')
            elif(length < 20):
                print('Холодно!')
            else:
                print('Вічна мерзлота')

            if(count_input == 7):
                score -= 10     #зменшуємо очки (плата за підказки) в залежності від кількості спроб
                if (number % 2 == 0):
                    print('Число парне')
                else:
                    print('Число непарне')
            elif(count_input == 6):
                score -= 8
                if (number % 3 == 0):
                    print('Число ділиться на 3 без остачі')
                else:
                    print('Число не ділиться на 3 без остачі')
            elif(count_input == 5):
                score -= 4
                if (number % 4 == 0):
                    print('Число ділиться на 4 без остачі')
                else:
                    print('Число не ділиться на 4 без остачі')
            elif(count_input > 2 and count_input < 5):
                score -= 2
                if (x > number):
                    print('Загадане число менше вашого')
                else:
                    print('Загадане число більше вашого')
            score -= 5   #плата за кожну спробу + додаткова в залежності від кількості спроб
        count_input += 1 #кількість спроб, +1 за кожну спробу

    print('*' * 40)
    if (x == number):    #якщо перемога,то вітаємо
        print('Перемога! Вітаю!')
    else:                #інакше повідомляємо про поразку 
        print('Ой! У Вас закінчились очки. Ви програли :( ')

    if(input('Enter - зіграти ще, 0 + Enter - вийти') == '0'): #запитуєм користувача що робити  далі
        is_playing = False  #цикл завершується
    else:
        win = False         #цикл повторюється

    if(score > max_score):  #вираховуєм максимальну кількість очків
        max_score = score

print('*' * 60)
print('''Дякую, що зіграли в цю гру!
Повертайтесь швидше! Буду чекати з нетерпінням!
P.S. Ви добре тримались :) ''')

#кінець
Подякували: koala1

71

Re: Простенькі програми для новачків. (ТІЛЬКИ ДЛЯ НОВАЧКІВ)

якщо я згрупую марки авто на: за країнами виготовлення, за середньою ціною, за...за чим ще можна поділити скажіть будь ласка,
чи я щось не врахував?

72

Re: Простенькі програми для новачків. (ТІЛЬКИ ДЛЯ НОВАЧКІВ)

Irbis написав:

якщо я згрупую марки авто на: за країнами виготовлення, за середньою ціною, за...за чим ще можна поділити скажіть будь ласка,
чи я щось не врахував?

Об'єм двигуна, тип коробки передач, тип двигуна - дизель,карбюратор,електрокар. Тип кузова і тд. і тп. Коротше там варіантів дуже багато.

73

Re: Простенькі програми для новачків. (ТІЛЬКИ ДЛЯ НОВАЧКІВ)

тоді треба вгадувати моделі, а я говорив про марки

74 Востаннє редагувалося plusxx (27.03.2020 03:32:56)

Re: Простенькі програми для новачків. (ТІЛЬКИ ДЛЯ НОВАЧКІВ)

Irbis написав:

тоді треба вгадувати моделі, а я говорив про марки

   Cорі зле зрозумів.

75

Re: Простенькі програми для новачків. (ТІЛЬКИ ДЛЯ НОВАЧКІВ)

як зробити так, щоб рандомились назви марок авто, їх же треба було вводити(це я зробив), але (то що в мене не виходить) на екран виводилась підказка яка має підходити до рандомного авто.
сподіваюсь ви мене зрозуміли

76 Востаннє редагувалося plusxx (28.03.2020 21:59:12)

Re: Простенькі програми для новачків. (ТІЛЬКИ ДЛЯ НОВАЧКІВ)

Використайте словники типу:

tooltip = {'Волинянка':'Мега джип', 'Славута':'Супер-пупер', 'Запорожець':'Без коментарів'}
marka = random.choice(['Волинянка','Cлавута','Запорожець'])
response = inputt(f'Ця марка {tooltip[marka]} \nЩо це за марка дайте відповідь\n')
if response == marka:
Подякували: Irbis1

77

Re: Простенькі програми для новачків. (ТІЛЬКИ ДЛЯ НОВАЧКІВ)

Я компілював свою гру в .EXE
Як я можу її вам надіслати?

78

Re: Простенькі програми для новачків. (ТІЛЬКИ ДЛЯ НОВАЧКІВ)

Lanku na budj-jakyj snoposxovysce.

79

Re: Простенькі програми для новачків. (ТІЛЬКИ ДЛЯ НОВАЧКІВ)

https://drive.google.com/file/d/1F9ZSWk … sp=sharing

80

Re: Простенькі програми для новачків. (ТІЛЬКИ ДЛЯ НОВАЧКІВ)

Irbis написав:

Я компілював свою гру в .EXE
Як я можу її вам надіслати?

Сурси на Git**b. Exe'шку в Release.

Подякували: dot, Irbis2