我正在尝试用Python创建一个食谱书,它将执行以下操作:
创建一个程序,用于存储配方的成分。
程序应该要求用户输入:
程序应存储食谱名称,人数和成分列表及其数量和单位。
用户应该能够检索食谱并为不同数量的人重新计算成分。
程序应该要求用户输入人数。
程序应输出:
我的代码:
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)
这是我目前的代码。如果你运行代码,一切都可以输入,直到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
这是一个问题,因为据我所知,我需要将这些东西保存为它们(字符串,整数),并编辑它们以改变人数,以及放置它们。
任何关于为什么会出现此错误以及如何解决此错误的帮助将非常感谢,以及对其余代码的任何建议。
答案 0 :(得分:0)
使用此:
text_file = open(rname, "w")
for item in ing:
text_file.writelines(str(item))
答案 1 :(得分:0)
'fileobject.writelines()'以字符串的形式获取任何可迭代对象。在您的示例中,'value'存储整数:
line28: value = int(输入(“多少?没有单位。”))
您可以通过以下方式确认: print(type(value)):
因此,它需要在传入writelines()之前转换为字符串。
更改line32:
来自: ing.append(value) 到 ing.append(str(value))