21

Re: Потрібна допомога

ReAl написав:

перевірити, чи ніхто не відповів "дуже-дуже багато!" і всяке інше (від'ємне число), тому краще перетворити до виклику і зробити всі перевірки.

Доки цього не зробив помилки не знайшов.
Дуже дякую.
Якщо комусь цікаво, то ось як повинна виглядати програма:

class BankAccount:
    def __init__(self):
        self.name = 'Ілля'
        self.number_score = '54321'
        self.score_account = 40
    def __str__(self):
        msg = self.name + ' на вашому рахунку ' + str(self.score_account) + ' грн.'
        return msg
    def operacia_d(self, dobav):
        self.score_account = self.score_account + dobav
    def operacia_v(self, znaty):
        self.score_account = self.score_account - znaty
myAccount = BankAccount()
print myAccount
print 'Номер рахунку:', myAccount.number_score
def vvid():
    if vibir == 1:
        dob = input('Яку суму ви хочете добавити на ваш рахунок: ')
        print 'На ваш рахунок було нараховано ' + str(dob) + ' грн.'
        myAccount.operacia_d(dob)
        print 'Тепер на вашому рахунку ' + str(myAccount.score_account) + ' грн.'
    else:
        zna = input('Яку суму ви хочете зняти з вашого рахунку: ')
        myAccount.operacia_v(zna)
        print 'З вашого рахунку було знято ' + zna + ' грн.'
        print 'Тепер на вашому рахунку ' + str(myAccount.score_account) + ' грн.'
vibir = input('Щоб добавити грошей на рахунок напишіть 1, щоб зняти - 2: ')
while vibir == 1 or vibir == 2:
    vvid()
    vibir = input('Щоб добавити грошей на рахунок напишіть 1, щоб зняти - 2: ')
print 'Це не 1 і не 2, тому я завершую роботу.'

22

Re: Потрібна допомога

ping написав:

я б вам радив   пройти курс по базових типах даних і операціях з ними, а тоді вже переходити до класів.
наприклад https://www.codecademy.com/learn/learn-python

Я це все вчив. Просто коли я пройшов тему циклів і тему списків і словників - в мене пропала мотивація і я півроку не писав. І ось коли я недавно вернувся до програмування, то я вирішив нічого не повторяти, а почати зразу наступну тему. Але коли я шукав помилку в цій програмі то я вже все повторив.

23 Востаннє редагувалося koala (19.01.2018 14:13:52)

Re: Потрібна допомога

Назви operacia_d і operacia_v незручні. add/remove чи deposit/withdraw були б кращі.
Глобальні змінні - це зло. myAccount ще можна стерпіти, навколо нього вся програма будується, а от vibir треба ліквідувати:

def vvid(vibir):
   ...
while True:
  vibir = input('Щоб добавити грошей на рахунок напишіть 1, щоб зняти - 2: ')
  if vibir not in [1,2]:
    break
  vvid(vibir)

Зрештою, можна і глобальності myAccount позбутися, якщо передавати його в vvid.
Голий input в Python 2 теж не дуже добре.

24

Re: Потрібна допомога

koala написав:

Назви operacia_d і operacia_v незручні. add/remove чи deposit/withdraw були б кращі.
Глобальні змінні - це зло. myAccount ще можна стерпіти, навколо нього вся програма будується, а от vibir треба ліквідувати:

def vvid(vibir):
   ...
while True:
  vibir = input('Щоб добавити грошей на рахунок напишіть 1, щоб зняти - 2: ')
  if vibir not in [1,2]:
    break
  vvid(vibir)

Зрештою, можна і глобальності myAccount позбутися, якщо передавати його в vvid.
Голий input в Python 2 теж не дуже добре.

class BankAccount:
    def __init__(self, name, number_score, score_account):
        self.name = name
        self.number_score = number_score
        self.score_account = score_account
    def __str__(self):
        msg = self.name + ' на вашому рахунку ' + self.score_account + ' грн.'
        return msg
    def add(self, deposit):
        self.score_account = float(self.score_account) + deposit
    def remove(self, withdraw):
        self.score_account = float(self.score_account) - withdraw
myAccount = BankAccount('Ілля', '54321', '40')
print myAccount
print 'Номер рахунку:', myAccount.number_score
def vvid(choice):
    if choice == 1:
        dep = float(raw_input('Яку суму ви хочете добавити на ваш рахунок: '))
        print 'На ваш рахунок було нараховано ' + str(dep) + ' грн.'
        myAccount.add(dep)
        print 'Тепер на вашому рахунку ' + str(myAccount.score_account) + ' грн.'
    else:
        withd = float(raw_input('Яку суму ви хочете зняти з вашого рахунку: '))
        print 'З вашого рахунку було знято ' + str(withd) + ' грн.'
        myAccount.remove(withd)
        print 'Тепер на вашому рахунку ' + str(myAccount.score_account) + ' грн.'
while True:
    choice = float(raw_input('Щоб добавити грошей на рахунок напишіть 1, щоб зняти - 2: '))
    while choice not  in [1,2]:
        break
    vvid(choice)
print 'Це не 1 і не 2, тому я завершую роботу.'

Ось так?
Я не дуже розумію як можна зробити myAccount не глобальним. Я взагалі ще не знаю як робити код чистим. Треба буде почитати...

25

Re: Потрібна допомога

Eff1c написав:
ping написав:

я б вам радив   пройти курс по базових типах даних і операціях з ними, а тоді вже переходити до класів.
наприклад https://www.codecademy.com/learn/learn-python

Я це все вчив. Просто коли я пройшов тему циклів і тему списків і словників - в мене пропала мотивація і я півроку не писав. І ось коли я недавно вернувся до програмування, то я вирішив нічого не повторяти, а почати зразу наступну тему. Але коли я шукав помилку в цій програмі то я вже все повторив.


while vibir == 1 or vibir == 2:

а якщо варіантів значень буде десяток?

Прихований текст
while vibir in {1, 2}:

раджу порішати пару сотень задачок типу http://www.codeabbey.com/index/task_list і подивитися код інших учасників

але справа Ваша - можна вивчати інтеграли до вивчення таблички множення - але то довгий шлях

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

26

Re: Потрібна допомога

ping написав:

раджу порішати пару сотень задачок типу http://www.codeabbey.com/index/task_list і подивитися код інших учасників

Цікавий сайт. Жаль що я не знаю англійської і доводиться кожен раз перекладати сторінки корявим гугл перекладачем.

27

Re: Потрібна допомога

Якщо хто має ресурси по циклах на Python (не основи а деталі) - будь ласка скиньте.

28

Re: Потрібна допомога

вчи англійську, знадобиться

29

Re: Потрібна допомога

/KIT\ написав:

вчи англійську, знадобиться

Знаю... Вчу... Але не дуже виходить((

30

Re: Потрібна допомога

В мануалі все чудово розписанно, тільки англійською.

31

Re: Потрібна допомога

Eff1c написав:
/KIT\ написав:

вчи англійську, знадобиться

Знаю... Вчу... Але не дуже виходить((

краще виходить якщо:
- читати документацію, туторіали англійською ( хоча б 70%)
- всі інтерфейси на комп'ютері намагатися встановлювати тільки англійською
- гуглити англійською
- замінити російськомовний віндовз на англомовний дебіан

Подякували: FakiNyan, /KIT\, ostap34PHP, Eff1c4

32

Re: Потрібна допомога

/KIT\ написав:

В мануалі все чудово розписанно, тільки англійською.

можна посилання?

33

Re: Потрібна допомога

краще виходить якщо:
- читати документацію, туторіали англійською ( хоча б 70%)
- всі інтерфейси на комп'ютері намагатися встановлювати тільки англійською
- гуглити англійською
- замінити російськомовний віндовз на англомовний дебіан

Погані поради, себто добрі для вивчення англійського канцеляриту на початку.

34

Re: Потрібна допомога

Eff1c написав:

Якщо хто має ресурси по циклах на Python (не основи а деталі) - будь ласка скиньте.

На українському вікіпідручнику є два підручники мови Пайтон.

35

Re: Потрібна допомога

Виникло таке питання: я коли пишу програму (зазвичай це стається з списком чи словником) з українськими словами (з англійськими таке не трапляється) при виводі часто (а якщо з споском, то завжди) замість слів видає щось типу "\xc7\xe2\xee\xf0\xee\xf2\xed\xba \xe9\xee\xec\xf3 \xf7\xe8\xf1\xeb\xee"
Сьогодні писав ось таку програмку, що число пише у зворотньому напрямку:

n1 = int(raw_input('Введіть ціле число: '))
n2 = 0
while n1 > 0:
    digit = n1 % 10
    n1 = n1 // 10
    n2 = n2 * 10
    n2 = n2 + digit
print("Зворотнє йому число: ", n2)

На екран виводить
Введіть ціле число: 321467
('\xc7\xe2\xee\xf0\xee\xf2\xed\xba \xe9\xee\xec\xf3 \xf7\xe8\xf1\xeb\xee: ', 764123)

Мені це вже надоїло.
Що можна зробити?
Може, спробувати найти код до кожної букви і написати модуль (не знаю чи я зможу його написати), щоб переводив ці "каракулі" на нормальні українські слова?
Чи може установити python 3? Ви не знаєте чи там такі помилки бувають?

36

Re: Потрібна допомога

Eff1c написав:

Виникло таке питання: я коли пишу програму (зазвичай це стається з списком чи словником) з українськими словами (з англійськими таке не трапляється) при виводі часто (а якщо з споском, то завжди) замість слів видає щось типу "\xc7\xe2\xee\xf0\xee\xf2\xed\xba \xe9\xee\xec\xf3 \xf7\xe8\xf1\xeb\xee"
Сьогодні писав ось таку програмку, що число пише у зворотньому напрямку:

n1 = int(raw_input('Введіть ціле число: '))
n2 = 0
while n1 > 0:
    digit = n1 % 10
    n1 = n1 // 10
    n2 = n2 * 10
    n2 = n2 + digit
print("Зворотнє йому число: ", n2)

На екран виводить
Введіть ціле число: 321467
('\xc7\xe2\xee\xf0\xee\xf2\xed\xba \xe9\xee\xec\xf3 \xf7\xe8\xf1\xeb\xee: ', 764123)

Мені це вже надоїло.
Що можна зробити?
Може, спробувати найти код до кожної букви і написати модуль (не знаю чи я зможу його написати), щоб переводив ці "каракулі" на нормальні українські слова?
Чи може установити python 3? Ви не знаєте чи там такі помилки бувають?

utf-8

а можна просто перейти на python3 і  не вчити те, що не будете використовувати через 3-5 років.

37

Re: Потрібна допомога

ping написав:

а можна просто перейти на python3 і  не вчити те, що не будете використовувати через 3-5 років.

Значить на 3-му таких помилок нема?

38 Востаннє редагувалося ping (20.01.2018 16:18:34)

Re: Потрібна допомога

Eff1c написав:
ping написав:

а можна просто перейти на python3 і  не вчити те, що не будете використовувати через 3-5 років.

Значить на 3-му таких помилок нема?

це не помилки.

спробуйте першим рядком написати таке:
# -*- coding: UTF-8 -*-
(тільки використайте свою кодову таблицю)
https://www.python.org/dev/peps/pep-0263/

Подякували: Eff1c, leofun012

39

Re: Потрібна допомога

Встановив 3. Все чудово.
Потрібно на нього переходити. В принципі крім функції input сильних відмінностей немає.

40

Re: Потрібна допомога

Eff1c написав:

Встановив 3. Все чудово.
Потрібно на нього переходити. В принципі крім функції input сильних відмінностей немає.

Python 2:

print "Hello world!"

Python 3:

print("Hello world!")
Подякували: ostap34PHP, Eff1c, leofun013