为什么Python没有大括号,而其他语言有?
我正在尝试解决这个问题,但我最多只能得到 78 分,但我需要把它提高到 100 分。请帮我找出代码中的错误在哪里。
任务
买家想要按一定顺序购买 K 个产品。计算买家将花费多少钱(假设他将每个产品作为单独的订单,因此到他下次购买时,它将受到最大可能的折扣。
输入数据:
首先输入数字N(自然,不超过10)——折扣总数。然后输入N对数字:折扣金额ai(自然,不超过100)和必须超过才能获得这样的折扣的金额xi(自然,不超过100,000)。接下来,输入数字K——买家想要购买的商品数量(自然,不超过100个)。接下来是K个数字——每种产品的价格(自然不超过1000)。保证后续每次折扣的金额都大于前一次折扣后的金额,也保证后续每次折扣的价值大于前一次折扣的价值。保证网上商店所有价格都是100的倍数。
输出:打印一个数字 - 买家将为给定的购买订单花费多少钱。
实施例1
初始数据:
2
2 10
4 100
2
100
100
结果:(
198
注意,超过金额才享受折扣,所以第一次购买后折扣不是4,而是2%)
实施例2
初始数据:
3
2 10
4 20
8 30
1
1000
结果:(
1000
折扣仅在购买后才计入)
我的代码:
n = int(input())
a, x = [0] * n, [0] * n
for i in range(n):
a[i], x[i] = map(int, input().split())
a[i] = 1 - (a[i] / 100)
k = int(input())
prices = [int(input()) for _ in range(k)]
s = 0
j = 0
x.append(0)
for i in range(k):
if s > x[j]:
s += prices[i] * a[j]
if s > x[j + 1]:
j += 1
else:
s += prices[i]
print(int(s))
大家好!我在tkinter中编写了一个简单的程序。本质上是一个带有数据库(sqlite3)的注册程序。
所以现在,在我看来,它看起来不太好。是的,有人建议我重构代码,但我不知道该怎么做。虽然我理解OOP的本质。
代码:
from tkinter import Tk, Label, Entry, Button, StringVar, Toplevel, messagebox
import sqlite3
def check_user(login, password):
conn = sqlite3.connect('users.db')
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS users
(id INTEGER PRIMARY KEY,
login TEXT,
password TEXT)''')
c.execute("SELECT login, password FROM users WHERE login = ?", (login, ))
data_select_user = c.fetchone()
data_submit_uesr = (login, password)
if data_select_user == data_submit_uesr:
messagebox.showinfo(title="Welcome!", message="It's Ok!")
else:
messagebox.showerror(title="REGISTER!", message="REGISTER PLEASE!")
conn.commit()
conn.close()
def insert_user(login, password):
conn = sqlite3.connect('users.db')
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS users
(id INTEGER PRIMARY KEY,
login TEXT,
password TEXT)''')
c.execute("INSERT INTO users (login, password) VALUES (?,?)", (login, password))
conn.commit()
conn.close()
def submit():
login = login_var.get()
password = password_var.get()
# print('its ok')
check_user(login, password)
login_var.set("")
password_var.set("")
class root2:
def __init__(self):
super().__init__()
def submit2():
login = login_var2.get()
password = password_var2.get()
insert_user(login, password)
login_var2.set("")
password_var2.set("")
root2 = Toplevel(root)
root2.title("Register Form")
def call_func2():
close2()
submit2()
def close2():
root2.destroy()
login_var2 = StringVar()
password_var2 = StringVar()
Label(root2, text="Login:").grid(row=0, column=0)
Entry(root2, textvariable=login_var2).grid(row=0, column=1)
Label(root2, text="Password:").grid(row=1, column=0)
Entry(root2, textvariable=password_var2, show='*').grid(row=1,
column=1)
Button(root2, text="Submit", command=call_func2).grid(row=2, column=1)
root = Tk()
root.title("Login Form")
root.resizable(False, False)
login_var = StringVar()
password_var = StringVar()
def click():
root = root2()
def close():
root.destroy()
def call_func():
# close()
submit()
Label(root, text="Login:").grid(row=0, column=0)
Entry(root, textvariable=login_var).grid(row=0, column=1)
Label(root, text="Password:").grid(row=1, column=0)
Entry(root, textvariable=password_var, show='*').grid(row=1, column=1)
Button(root, text="Submit", command=call_func).grid(row=2, column=1)
Button(root, text="Create new account", command=click).grid(row=3,
column=1)
root.mainloop()
问题实际上出在标题上 - 当您按下课程按钮(实际上是任何内联按钮,但我们以这个按钮为例)时,它会闪烁 20 秒,然后停止。
问题是:怎样才能让按钮发挥其功能而不溢出呢?
与内联键盘相关的代码:
# курсовая
kurs_button = InlineKeyboardButton(
text='Курсовая',
callback_data='kurs_button'
)
# диплом
diplom_button = InlineKeyboardButton(
text='Диплом',
callback_data='dipl_button'
)
# реферат
ref_button = InlineKeyboardButton(
text='Реферат',
callback_data='ref_button'
)
# научная статья
science_button = InlineKeyboardButton(
text='Науч. статья',
callback_data='science_button'
)
service_kb = InlineKeyboardMarkup(inline_keyboard=[[kurs_button, diplom_button, ref_button, science_button], [cancel_button]])
与按钮本身关联的代码:
# вопрос про тему
@router.callback_query(lambda c: c.data == 'kurs_button', StateFilter(Universal.choice))
async def choose_kurs(callback_query: types.CallbackQuery, state: FSMContext):
global TOTAL
TOTAL = 1500
await callback_query.message.answer('Вы выбрали курсовую работу, пожалуйста ответьте на несколько вопросов, чтобы мы могли оценить вашу работу\n')
await fill_theme(callback_query, state)
async def fill_theme(callback_query: types.CallbackQuery, state: FSMContext):
await callback_query.message.answer('Напишите тему вашей курсовой.', reply_markup=cancel_kb)
await state.set_state(KursStates.theme) # установления состояния "Тема"
原则上,一切正常,但具体来说,这种输血需要被移除。
我выражение从互联网上获取任何用于在字符串中搜索匹配项的内容,并执行以下操作:/(^(выражение))|(выражение)|((выражение)$)|(^(выражение)$)/,但如果它位于字符串末尾,则它不会捕获字符串中的地址,并且一切都在服务器端表达式模拟器中运行。如何写出正确的表达方式?我看到有些人$使用\z严格的行尾来代替,但我仍然不明白如何在这个插件中正确捕获开头或结尾。
