Python Recipie书籍对文件的写入和读取

Python Recipie书籍对文件的写入和读取,python,Python,我正在尝试用Python创建一本食谱,它将完成以下工作: 创建一个程序来存储配方的配料 程序应要求用户输入: 食谱将提供的人数 配料清单:项目、数量和单位,例如面粉、150克 程序应存储配方名称、人数和配料清单及其数量和单位 用户应该能够检索配方,并为不同数量的人重新计算配料 程序应要求用户输入人数 程序应输出: 菜名 新的人数 修改后的数量与此人数的单位 我的代码: def print_menu(): print('Make a choice.') print('1. Add a ne

我正在尝试用Python创建一本食谱,它将完成以下工作:

创建一个程序来存储配方的配料

程序应要求用户输入:

  • 食谱将提供的人数
  • 配料清单:项目、数量和单位,例如面粉、150克
程序应存储配方名称、人数和配料清单及其数量和单位

用户应该能够检索配方,并为不同数量的人重新计算配料

程序应要求用户输入人数

程序应输出:

  • 菜名
  • 新的人数
  • 修改后的数量与此人数的单位
我的代码:

def print_menu():
print('Make a choice.')
print('1. Add a new recipe')
print('2. Search for an existing recipe')
print()

sname=""
i = 0
x = 0
z = 0
ingn = ""
unit = ""
value = ""
ing = []
rname=""
menu_no=0

print_menu()
    while menu_no != 5:
    menu_no = int(input("Choose an option (1-2): "))
       if menu_no == 1:
       rname = str(input("Choose a name for the recipe "))
       i = int(input("How many ingredients do you want? "))
       z = int(input("How many people does this recipie serve? "))
       while x < i:
        x = x+1
        ingn = input("What is the ingredient? ")
        value = int(input("How much of it? No units. "))
        unit = input("What units? ")
        ing.append(ingn)
        ing.append(value)
        ing.append(unit)
        print (ing)
    rname = (rname + ".txt")
    text_file = open(rname, "w")
    text_file.writelines(ing)
def print_menu():
打印('做出选择')
打印('1.添加新配方')
打印('2.搜索现有配方')
打印()
sname=“”
i=0
x=0
z=0
ingn=“”
unit=“”
value=“”
ing=[]
rname=“”
菜单号=0
打印菜单()
而菜单_no!=5:
菜单号=int(输入(“选择选项(1-2):”)
如果菜单号=1:
rname=str(输入(“为配方选择名称”))
i=int(输入(“您想要多少配料?”)
z=int(输入(“这个收件人服务多少人?”)
而x
这是我目前掌握的代码。如果您运行代码,所有内容都可以输入到text_file.writelines(ing)之前,在此期间发生错误:

Traceback (most recent call last):
  File "W:\Year 11 work\Recipe\Morgan Bedford\Recipie.py", line 36, in <module>
    text_file.writelines(ing)
TypeError: must be str, not int
回溯(最近一次呼叫最后一次):
文件“W:\Year 11 work\Recipe\Morgan Bedford\Recipie.py”,第36行,在
text_file.writelines(ing)
TypeError:必须是str,而不是int
这是一个问题,因为据我所知,我需要将这些东西保存为它们是什么(字符串、整数),并对它们进行编辑以根据人数进行更改,以及将它们输出

对于出现此错误的原因以及如何修复此错误的任何帮助,以及对代码其余部分的任何建议,我们将不胜感激。

请使用以下方法:

text_file = open(rname, "w")
for item in ing:
    text_file.writelines(str(item))
“fileobject.writelines()”以字符串的形式接受任何iterable对象。在您的示例中,“value”存储整数:

第28行:value=int(输入(“有多少?没有单位”))

您可以通过以下方式确认这一点: 打印(类型(值)):

因此,在传递到writelines()之前,需要将其转换为字符串

更改第32行:

from:ing.append(值)
ing.append(str(value))

缩进仍然混乱。
ing
中至少有一个东西是
int
)。似乎这些必须是
str
才能写入文件。我认为这是GCSE计算任务,对吗?你可能想看看这个。确保您理解错误消息告诉您的内容。考虑如何将
ing
的成员转换为
writelines
需要的
string
类型。。。