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