Проблемы с записью в файл — объект ‘list’ не вызывается (Python)

#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)