https://imgur.com/a/zEYf69b (или скриншот, если не откроется ссылка)
Ваша программа:
1) Вы считываете все в одну строку, что не соответствует главному условию задачи: в файле даны строки, а не одна строка. На скриншоте приведено верное написание: пишем цикл for s in file.readlines(), так мы обозначим, что строк больше одной.
2) Для подсчета количества букв логично использовать встроенный метод str.count(''), однако если вы решили обойти это и использовать специальные переменные для подсчета (такой вариант решения возможен, хотя и менее эффективен с точки зрения написания кода), верное решение таким путем приведено на скриншоте №2
2.1) В программе №2 необходимо не забывать обнулять переменные
после каждого цикла, как это указано на скриншоте №2
Программа на Python приведена ниже
Объяснение:
https://imgur.com/a/zEYf69b (или скриншот, если не откроется ссылка)
Ваша программа:
1) Вы считываете все в одну строку, что не соответствует главному условию задачи: в файле даны строки, а не одна строка. На скриншоте приведено верное написание: пишем цикл for s in file.readlines(), так мы обозначим, что строк больше одной.
2) Для подсчета количества букв логично использовать встроенный метод str.count(''), однако если вы решили обойти это и использовать специальные переменные для подсчета (такой вариант решения возможен, хотя и менее эффективен с точки зрения написания кода), верное решение таким путем приведено на скриншоте №2
2.1) В программе №2 необходимо не забывать обнулять переменные
после каждого цикла, как это указано на скриншоте №2
from tkinter import *
from tkinter import messagebox
from tkinter import ttk
import math
import sys
root = Tk()
root.title("Конвертер валют: перевод рублей в $ и евро")
bttn_list = [
"7", "8", "9","C", "=","Exit", "+",
"4", "5", "6","-","*", "/", ".",
"1", "2", "3",
"(", ")","EUR","USD" ]
r = 1
c = 0
for i in bttn_list:
rel = ""
cmd=lambda x=i: calc(x)
ttk.Button(root, text=i, command = cmd, width = 9).grid(row=r, column = c)
c += 1
if c > 6:
c = 0
r += 1
calc_entry = Entry(root, width = 33)
calc_entry.grid(row=0, column=0, columnspan=5)
#логика калькулятора
def calc(key):
global memory
if key == "=":
#исключение написания слов
str1 = "-+0123456789.*/)("
if calc_entry.get()[0] not in str1:
calc_entry.insert(END, "First symbol is not number!")
messagebox.showerror("Error!", "You did not enter the number!")
#исчисления
try:
result = eval(calc_entry.get())
calc_entry.insert(END, "=" + str(result))
except:
calc_entry.insert(END, "Error!")
messagebox.showerror("Error!", "Check the correctness of data")
#очищение поля ввода
elif key == "C":
calc_entry.delete(0, END)
elif key == "±":
if "=" in calc_entry.get():
calc_entry.delete(0, END)
try:
if calc_entry.get()[0] == "-":
calc_entry.delete(0)
else:
calc_entry.insert(0, "-")
except IndexError:
pass
elif key == "EUR":
calc_entry.insert(END, "=" + str(77.04*(int(calc_entry.insert(
elif key == "USD":
calc_entry.insert(END, "=" + str(65.84*(int(calc_entry.insert(
pass
elif key == "Exit":
root.after(1,root.destroy)
sys.exit
elif key == "(":
calc_entry.insert(END, "(")
elif key == ")":
calc_entry.insert(END, ")")
else:
if "=" in calc_entry.get():
calc_entry.delete(0, END)
calc_entry.insert(END, key)
root.mainloop()
Объяснение:
как-то так