#python #python-3.x #list
#python #python-3.x #Список
Вопрос:
Следующий скрипт представляет собой лишь 10%-ную выборку гораздо большего калькулятора, который является частью назначения.
Единственная реальная проблема, с которой я столкнулся, — это когда дело доходит до 'list' object is not callable
— все остальное на самом деле работает отлично.
Я исследовал это и применил различные примеры, и каждый из них затем открывает новую проблему, и она не заканчивается. Итак, я решил поделиться этим здесь, чтобы увидеть, где я здесь терплю неудачу.
"""
Example of the string calculator issues (Lists)
"""
# Import datetime
from datetime import datetime
# Establish Timestamp Object
ts = datetime.now()
timestamp = ts.strftime("%d/%m/%Y %H:%M:%S")
# File
Ofile = open("testfile.txt", "w")
# Write to File Test - Timestamp
Ofile.write("n Start Timestamp = " str(timestamp))
# Simple Add Calculator
num1 = float(input("nPlease select your first number to Add: "))
num2 = float(input("nPlease select your second number to Add: "))
add1 = float(num1 num2)
print(f"nAdding, {num1} {num2} =",add1)
key = input("nPress any key to continue.")
Ofile.write("n Timestamp: " str(timestamp))
Ofile.write("n The result of Adding " str(num1) " and " str(num2) " is: " str(add1))
Ofile.close()
Ofile = open("testfile.txt", "r")
print(Ofile.read())
key = input("nPress any key to continue.")
Ofile = open("testfile.txt", "a")
# String Calculator
print("/nPlease enter two numbers to calculate, each separated nby a space or comma and then provide the arithmetic symbol ( )")
print('''
Example:
45 45
578,945,
''')
scalc = input("nInput: ")
if scalc.find(" ") != -1:
str = scalc.split(" ")
elif scalc.find(",") != -1:
str = scalc.split(",")
else:
print("nThat was an invalid Entry. Please try again.")
num3 = float(str[0])
num4 = float(str[1])
if str[2] == " ":
add2 = float(num3 num4)
print(f"nAdding, {num3} {num4} =",add2)
key = input("nPress any key to continue.")
# Issues with writing to file
Ofile.write("n Timestamp: " str(timestamp)) # Issue: ('list' object is not callable)
Ofile.write("n The result of Adding " str(num3) " and " str(num4) " is: " str(add2)) # Issue: ('list' object is not callable)
Ofile.close()
Ofile = open("testfile.txt", "r")
print(Ofile.read())
key = input("nPress any key to continue.")
Комментарии:
1. Вы присвоили список имени
str
, затем попытались вызвать встроенную функциюstr
. Используйте другое имя для вашего списка.2. Я бы также посоветовал вам использовать оператор ‘with’ для контекстной обработки ваших ресурсов.
3. @maciejwww — Спасибо — это то, что следует отредактировать? Действительно? И добавленный вами тег list предназначен для HTML, а не для Python. Я собирался добавить его, и это неправильный тег.
4. @furthark Да, «спасибо» следует отредактировать из вопросов.
5. Я думаю, вы имеете в виду приветствия? Следует ли удалять «Привет», «спасибо», слоганы и приветствия из сообщений?
Ответ №1:
Не назначайте и не используйте предопределенные классы / функции / ключевые слова в качестве переменных.
Используйте измененный код ниже:
"""
Example of the string calculator issues (Lists)
"""
# Import datetime
from datetime import datetime
# Establish Timestamp Object
ts = datetime.now()
timestamp = ts.strftime("%d/%m/%Y %H:%M:%S")
# File
Ofile = open("testfile.txt", "w")
# Write to File Test - Timestamp
Ofile.write("n Start Timestamp = " str(timestamp))
# Simple Add Calculator
num1 = float(input("nPlease select your first number to Add: "))
num2 = float(input("nPlease select your second number to Add: "))
add1 = float(num1 num2)
print(f"nAdding, {num1} {num2} =",add1)
key = input("nPress any key to continue.")
Ofile.write("n Timestamp: " str(timestamp))
Ofile.write("n The result of Adding " str(num1) " and " str(num2) " is: " str(add1))
Ofile.close()
Ofile = open("testfile.txt", "r")
print(Ofile.read())
key = input("nPress any key to continue.")
Ofile = open("testfile.txt", "a")
# String Calculator
print("/nPlease enter two numbers to calculate, each separated nby a space or comma and then provide the arithmetic symbol ( )")
print('''
Example:
45 45
578,945,
''')
scalc = input("nInput: ")
if scalc.find(" ") != -1:
st = scalc.split(" ")
elif scalc.find(",") != -1:
st = scalc.split(",")
else:
print("nThat was an invalid Entry. Please try again.")
num3 = float(st[0])
num4 = float(st[1])
if st[2] == " ":
add2 = float(num3 num4)
print(f"nAdding, {num3} {num4} =",add2)
key = input("nPress any key to continue.")
# Issues with writing to file
Ofile.write("n Timestamp: " str(timestamp)) # Issue: ('list' object is not callable)
Ofile.write("n The result of Adding " str(num3) " and " str(num4) " is: " str(add2)) # Issue: ('list' object is not callable)
Ofile.close()
Ofile = open("testfile.txt", "r")
print(Ofile.read())
key = input("nPress any key to continue.")
Комментарии:
1. Спасибо, сэр, да, это устранило проблему. Я смотрю на то, что я на самом деле сделал неправильно. Итак, в основном проблема была с ‘str’?
2. В python возможно изменение предопределенных методов (хотя это плохо), т.Е. str, list, tuple и т. Д., Это то, что вы сделали, после этого вы не сможете использовать эту функцию. (str)