Diff
checker
文本
文本
圖像
文檔
Excel
文件夾
Legal
Enterprise
桌面版
定價
登入
下載 Diffchecker 桌面版
比較文本
尋找兩個文字檔案之間的差異
工具
歷史
即時編輯器
摺疊未變更行
關閉換行
檢視
拆分
統一
比對精度
智能
單詞
字符
語法突出顯示
選擇語法
忽略
文字轉換
前往第一個差異
編輯輸入
Diffchecker Desktop
執行Diffchecker最安全的方式。取得Diffchecker桌面應用程式:您的差異永遠不會離開您的電腦!
取得桌面版
app-separating-code-to-models
建立於
6 年前
差異永不過期
清除
匯出
分享
解釋
52 刪除
行
總計
刪除
字符
總計
刪除
要繼續使用此功能,請升級到
Diff
checker
Pro
查看價格
102 行
全部複製
39 新增
行
總計
新增
字符
總計
新增
要繼續使用此功能,請升級到
Diff
checker
Pro
查看價格
101 行
全部複製
複製
已複製
複製
已複製
import
os
import
random
import psycopg2
import psycopg2
複製
已複製
複製
已複製
from psycopg2.errors import DivisionByZero
from dotenv import load_dotenv
import database
import database
複製
已複製
複製
已複製
from connection_pool import pool
from models.option import Option
from models.poll import Poll
複製
已複製
複製
已複製
DATABASE_PROMPT = "Enter the DATABASE_URI value or leave empty to load from .env file: "
MENU_PROMPT = """-- Menu --
MENU_PROMPT = """-- Menu --
1) Create new poll
1) Create new poll
2) List open polls
2) List open polls
3) Vote on a poll
3) Vote on a poll
4) Show poll votes
4) Show poll votes
5) Select a random winner from a poll option
5) Select a random winner from a poll option
6) Exit
6) Exit
Enter your choice: """
Enter your choice: """
NEW_OPTION_PROMPT = "Enter new option text (or leave empty to stop adding options): "
NEW_OPTION_PROMPT = "Enter new option text (or leave empty to stop adding options): "
複製
已複製
複製
已複製
def prompt_create_poll(
connection
):
def prompt_create_poll(
):
poll_
title = input("Enter poll title: ")
title = input("Enter poll title: ")
poll_
owner = input("Enter poll owner: ")
owner = input("Enter poll owner: ")
options
=
[]
poll
=
Poll(title, owner)
poll.save()
while (new_option := input(NEW_OPTION_PROMPT)):
while (new_option := input(NEW_OPTION_PROMPT)):
複製
已複製
複製
已複製
option
s.append
(new_option)
poll.add_
option
(new_option)
database.create_poll(connection, poll_title, poll_owner, options)
複製
已複製
複製
已複製
def list_open_polls(
connection
):
def list_open_polls(
):
polls = database.get_polls(connection)
for poll in
P
oll
.all()
:
print(f"{poll
.id
}: {poll
.title
} (created by {poll
.owner
})")
for poll in
p
oll
s
:
print(f"{poll
[0]
}: {poll
[1]
} (created by {poll
[2]
})")
複製
已複製
複製
已複製
def prompt_vote_poll(
connection
):
def prompt_vote_poll(
):
poll_id = int(input("Enter poll would you like to vote on: "))
poll_id = int(input("Enter poll would you like to vote on: "))
複製
已複製
複製
已複製
poll_options = database.get_poll_details(connection, poll_id)
_print_poll_options(
Poll.get(
poll_
id).
options)
_print_poll_options(
poll_
options)
option_id = int(input("Enter option you'd like to vote for: "))
option_id = int(input("Enter option you'd like to vote for: "))
username = input("Enter the username you'd like to vote as: ")
username = input("Enter the username you'd like to vote as: ")
複製
已複製
複製
已複製
database.add_poll_vote(connection, username,
option_id)
Option.get(
option_id)
.vote(username)
複製
已複製
複製
已複製
def _print_poll_options(
poll_with_
options):
def _print_poll_options(
options):
for option in
poll_with_
options:
for option in
options:
print(f"{option
[3]
}: {option
[4]
}")
print(f"{option
.id
}: {option
.text
}")
複製
已複製
複製
已複製
def show_poll_votes(
connection
):
def show_poll_votes(
):
poll_id = int(input("Enter poll you would like to see votes for: "))
poll_id = int(input("Enter poll you would like to see votes for: "))
複製
已複製
複製
已複製
poll = Poll.get(poll_id)
options = poll.options
votes_per_option = [len(option.votes) for option in options]
total_votes = sum(votes_per_option)
try:
try:
複製
已複製
複製
已複製
poll_and_votes = database.get_poll_and_vote_results(connection, poll_id)
for option, votes in zip(options, votes_per_option):
except
DivisionByZero
:
percentage = votes / total_votes * 100
percentage = votes / total_votes * 100
print(f"{option.text} for {votes} ({percentage:.2f}% of total)")
except
ZeroDivisionError
:
print("No votes yet cast for this poll.")
print("No votes yet cast for this poll.")
複製
已複製
複製
已複製
else:
for result in poll_and_votes:
print(f"{result[1]} got {result[2]} votes ({result[3]:.2f}% of total)")
複製
已複製
複製
已複製
def randomize_poll_winner(
connection
):
def randomize_poll_winner(
):
poll_id = int(input("Enter poll you'd like to pick a winner for: "))
poll_id = int(input("Enter poll you'd like to pick a winner for: "))
複製
已複製
複製
已複製
poll
_options
=
database
.get
_poll_details(connection,
poll_id)
poll
=
Poll
.get
(
poll_id)
_print_poll_options(poll
_
options)
_print_poll_options(poll
.
options)
option_id = int(input("Enter which is the winning option, we'll pick a random winner from voters: "))
option_id = int(input("Enter which is the winning option, we'll pick a random winner from voters: "))
複製
已複製
複製
已複製
winner =
database.get_
random
_poll_
vote
(connection, option_id
)
votes = Option.get(option_id).votes
winner =
random
.choice(
vote
s
)
print(f"The randomly selected winner is {winner[0]}.")
print(f"The randomly selected winner is {winner[0]}.")
MENU_OPTIONS = {
MENU_OPTIONS = {
"1": prompt_create_poll,
"1": prompt_create_poll,
"2": list_open_polls,
"2": list_open_polls,
"3": prompt_vote_poll,
"3": prompt_vote_poll,
"4": show_poll_votes,
"4": show_poll_votes,
"5": randomize_poll_winner
"5": randomize_poll_winner
}
}
def menu():
def menu():
複製
已複製
複製
已複製
database_uri = input(DATABASE_PROMPT)
connection =
pool.getconn(
)
if not database_uri:
load_dotenv()
database_uri = os.environ["DATABASE_URI"]
connection =
psycopg2.connect(database_uri
)
database.create_tables(connection)
database.create_tables(connection)
複製
已複製
複製
已複製
pool.putconn(connection)
while (selection := input(MENU_PROMPT)) != "6":
while (selection := input(MENU_PROMPT)) != "6":
try:
try:
複製
已複製
複製
已複製
MENU_OPTIONS[selection](
connection
)
MENU_OPTIONS[selection](
)
except KeyError:
except KeyError:
print("Invalid input selected. Please try again.")
print("Invalid input selected. Please try again.")
menu()
menu()
已保存差異
原始文本
開啟檔案
import os import psycopg2 from psycopg2.errors import DivisionByZero from dotenv import load_dotenv import database DATABASE_PROMPT = "Enter the DATABASE_URI value or leave empty to load from .env file: " MENU_PROMPT = """-- Menu -- 1) Create new poll 2) List open polls 3) Vote on a poll 4) Show poll votes 5) Select a random winner from a poll option 6) Exit Enter your choice: """ NEW_OPTION_PROMPT = "Enter new option text (or leave empty to stop adding options): " def prompt_create_poll(connection): poll_title = input("Enter poll title: ") poll_owner = input("Enter poll owner: ") options = [] while (new_option := input(NEW_OPTION_PROMPT)): options.append(new_option) database.create_poll(connection, poll_title, poll_owner, options) def list_open_polls(connection): polls = database.get_polls(connection) for poll in polls: print(f"{poll[0]}: {poll[1]} (created by {poll[2]})") def prompt_vote_poll(connection): poll_id = int(input("Enter poll would you like to vote on: ")) poll_options = database.get_poll_details(connection, poll_id) _print_poll_options(poll_options) option_id = int(input("Enter option you'd like to vote for: ")) username = input("Enter the username you'd like to vote as: ") database.add_poll_vote(connection, username, option_id) def _print_poll_options(poll_with_options): for option in poll_with_options: print(f"{option[3]}: {option[4]}") def show_poll_votes(connection): poll_id = int(input("Enter poll you would like to see votes for: ")) try: poll_and_votes = database.get_poll_and_vote_results(connection, poll_id) except DivisionByZero: print("No votes yet cast for this poll.") else: for result in poll_and_votes: print(f"{result[1]} got {result[2]} votes ({result[3]:.2f}% of total)") def randomize_poll_winner(connection): poll_id = int(input("Enter poll you'd like to pick a winner for: ")) poll_options = database.get_poll_details(connection, poll_id) _print_poll_options(poll_options) option_id = int(input("Enter which is the winning option, we'll pick a random winner from voters: ")) winner = database.get_random_poll_vote(connection, option_id) print(f"The randomly selected winner is {winner[0]}.") MENU_OPTIONS = { "1": prompt_create_poll, "2": list_open_polls, "3": prompt_vote_poll, "4": show_poll_votes, "5": randomize_poll_winner } def menu(): database_uri = input(DATABASE_PROMPT) if not database_uri: load_dotenv() database_uri = os.environ["DATABASE_URI"] connection = psycopg2.connect(database_uri) database.create_tables(connection) while (selection := input(MENU_PROMPT)) != "6": try: MENU_OPTIONS[selection](connection) except KeyError: print("Invalid input selected. Please try again.") menu()
更改後文本
開啟檔案
import random import psycopg2 import database from connection_pool import pool from models.option import Option from models.poll import Poll MENU_PROMPT = """-- Menu -- 1) Create new poll 2) List open polls 3) Vote on a poll 4) Show poll votes 5) Select a random winner from a poll option 6) Exit Enter your choice: """ NEW_OPTION_PROMPT = "Enter new option text (or leave empty to stop adding options): " def prompt_create_poll(): title = input("Enter poll title: ") owner = input("Enter poll owner: ") poll = Poll(title, owner) poll.save() while (new_option := input(NEW_OPTION_PROMPT)): poll.add_option(new_option) def list_open_polls(): for poll in Poll.all(): print(f"{poll.id}: {poll.title} (created by {poll.owner})") def prompt_vote_poll(): poll_id = int(input("Enter poll would you like to vote on: ")) _print_poll_options(Poll.get(poll_id).options) option_id = int(input("Enter option you'd like to vote for: ")) username = input("Enter the username you'd like to vote as: ") Option.get(option_id).vote(username) def _print_poll_options(options): for option in options: print(f"{option.id}: {option.text}") def show_poll_votes(): poll_id = int(input("Enter poll you would like to see votes for: ")) poll = Poll.get(poll_id) options = poll.options votes_per_option = [len(option.votes) for option in options] total_votes = sum(votes_per_option) try: for option, votes in zip(options, votes_per_option): percentage = votes / total_votes * 100 percentage = votes / total_votes * 100 print(f"{option.text} for {votes} ({percentage:.2f}% of total)") except ZeroDivisionError: print("No votes yet cast for this poll.") def randomize_poll_winner(): poll_id = int(input("Enter poll you'd like to pick a winner for: ")) poll = Poll.get(poll_id) _print_poll_options(poll.options) option_id = int(input("Enter which is the winning option, we'll pick a random winner from voters: ")) votes = Option.get(option_id).votes winner = random.choice(votes) print(f"The randomly selected winner is {winner[0]}.") MENU_OPTIONS = { "1": prompt_create_poll, "2": list_open_polls, "3": prompt_vote_poll, "4": show_poll_votes, "5": randomize_poll_winner } def menu(): connection = pool.getconn() database.create_tables(connection) pool.putconn(connection) while (selection := input(MENU_PROMPT)) != "6": try: MENU_OPTIONS[selection]() except KeyError: print("Invalid input selected. Please try again.") menu()
尋找差異