python如何让用户输入文件名并打开文件_(Python)如何让用户打开文本文件然后更改整数/数字...
我問了一個類似的問題,但無濟于事.
我是一名新手編程學生,我只學過一些基本技巧.部分任務是創建一個我主要完成的配方程序,只有一部分阻止我完成.
我應該允許用戶調用以前創建的文本文件(我已完成此位),然后在此之后應該顯示該文件的內容供他們查看(我也做過這一點),但是用戶應該能夠重新計算份量,從而改變成分的數量.因此,如果用戶輸入:“我想要2份”并且1份的原始數量是100g,那么它現在應該輸出200g.
這真讓我感到沮喪,我的老師明天希望這項工作.以下是我應該允許用戶做的事情.
用戶應該能夠檢索配方并為不同數量的人重新計算成分.
?程序應要求用戶輸入人數.
?程序應輸出:
?食譜名稱
?新人數
?修訂后的數量,包含此人數的單位.
我將在下面發布我的實際代碼,以顯示我到目前為止所做的工作,即允許用戶查看和制作新配方.但缺少修訂后的數量.
如果代碼混亂或無組織,我很抱歉,我是新手.
代碼到目前為止:
#!/usr/bin/env python
import time
def start():
while True:
user_input = input("\nWhat would you like to do? " "\n 1) - Enter N to enter a new recipe. \n 2 - Enter V to view an exisiting recipe, \n 3 - Enter E - to edit a recipe to your liking. \n 4 - Or enter quit to halt the program " "\n ")
if user_input == "N":
print("\nOkay, it looks like you want to create a new recipe. Give me a moment..." "\n")
time.sleep(1.5)
new_recipe()
elif user_input == "V":
print("\nOkay, Let's proceed to let you view an existing recipe stored on the computer")
time.sleep(1.5)
exist_recipe()
elif user_input == "E":
print("\nOkay, it looks like you want to edit a recipe's servings. Let's proceed ")
time.sleep(1.5)
modify_recipe()
elif user_input == "quit":
return
else:
print("\nThat is not a valid command, please try again with the commands allowed ")
def new_recipe():
new_recipe = input("Please enter the name of the new recipe you wish to add! ")
recipe_data = open(new_recipe, 'w')
ingredients = input("Enter the number of ingredients ")
servings = input("Enter the servings required for this recipe ")
for n in range (1,int(ingredients)+1):
ingredient = input("Enter the name of the ingredient ")
recipe_data.write("\nIngrendient # " +str(n)+": \n")
print("\n")
recipe_data.write(ingredient)
recipe_data.write("\n")
quantities = input("Enter the quantity needed for this ingredient ")
print("\n")
recipe_data.write(quantities)
recipe_data.write("\n")
unit = input("Please enter the unit for this quantity (i.e. g, kg) ")
recipe_data.write(unit)
print("\n")
for n in range (1,int(ingredients)+1):
steps = input("\nEnter step " + str(n)+ ": ")
print("\n")
recipe_data.write("\nStep " +str(n) + " is to: \n")
recipe_data.write("\n")
recipe_data.write(steps)
recipe_data.close()
def exist_recipe():
choice_exist= input("\nOkay, it looks like you want to view an existing recipe. Please enter the name of the recipe required. ")
exist_recipe = open(choice_exist, "r+")
print("\nThis recipe makes " + choice_exist)
print(exist_recipe.read())
time.sleep(1)
def modify_recipe():
choice_exist = input("\nOkay, it looks like you want to modify a recipe. Please enter the name of this recipe ")
exist_recipe = open(choice_exist, "r+")
servrequire = int(input("Please enter how many servings you would like "))
start()
編輯:
下面是一個文本文件(配方)的示例創建及其輸出(該文件名為bread.txt)注意輸出有點亂,我將解決一旦我可以使程序的核心工作.
創建食譜
What would you like to do?
1) - Enter N to enter a new recipe.
2 - Enter V to view an exisiting recipe,
3 - Enter E - to edit a recipe to your liking.
4 - Or enter quit to halt the program
N
Okay, it looks like you want to create a new recipe. Give me a moment...
Please enter the name of the new recipe you wish to add! bread.txt
Enter the number of ingredients 3
Enter the servings required for this recipe 1
Enter the name of the ingredient flour
Enter the quantity needed for this ingredient 300
Please enter the unit for this quantity (i.e. g, kg) g
Enter the name of the ingredient salt
Enter the quantity needed for this ingredient 50
Please enter the unit for this quantity (i.e. g, kg) g
Enter the name of the ingredient water
Enter the quantity needed for this ingredient 1
Please enter the unit for this quantity (i.e. g, kg) l
Enter step 1: pour all ingredients into a bowl
Enter step 2: mix together
Enter step 3: put in a bread tin and bake
查看食譜
What would you like to do?
1) - Enter N to enter a new recipe.
2 - Enter V to view an exisiting recipe,
3 - Enter E - to edit a recipe to your liking.
4 - Or enter quit to halt the program
V
Okay, Let's proceed to let you view an existing recipe stored on the computer
Okay, it looks like you want to view an existing recipe. Please enter the name of the recipe required. bread.txt
This recipe makes bread.txt
Ingrendient # 1:
flour
300
g
Ingrendient # 2:
salt
50
g
Ingrendient # 3:
water
1
l
Step 1 is to:
pour all ingredients into a bowl
Step 2 is to:
mix together
Step 3 is to:
put in a bread tin and bake
如果輸入V,這是輸出:
這個食譜制作了bread.txt
Ingrendient # 1:
flour
300
g
Ingrendient # 2:
salt
50
g
Ingrendient # 3:
water
1
l
Step 1 is to:
pour all ingredients into a bowl
Step 2 is to:
mix together
Step 3 is to:
put in a bread tin and bake
我期待著你的回復.
解決方法:
您的配方文件看起來像這樣:
Ingrendient # N:
{INGREDIENT}
{AMOUNT}
{METRIC}
...
(After N ingredients...)
Step N:
{INSTRUCTIONS}
所以基本上你想要一次讀取四行,丟棄第一行,然后將其余部分分配給有用的東西.
with open(path_to_recipe) as infile:
ingredients = []
while True:
try:
sentinel = next(infile) # skip a line
if sentinel.startswith("Step"):
# we're past the ingredients, so
break
name = next(infile)
amount = next(infile)
metric = next(infile)
except StopIteration:
# you've reached the end of the file
break
ingredients.append({'name':name, 'amount':float(amount), 'metric':metric})
# use a dictionary for easier access
當我們退出with塊時,成分將是一個字典列表,可以按如下方式使用:
for ingredient in ingredients:
scaled_volume = ingredient['amount'] * scale # double portions? etc...
print(scaled_volume, ingredient['metric'], " ", ingredient['name'])
# # RESULT IS:
300g flour
50g salt
1l water
你應該能夠利用所有這些來完成你的任務!
標簽:python,file,python-3-x,raspberry-pi
來源: https://codeday.me/bug/20190702/1361141.html
總結
以上是生活随笔為你收集整理的python如何让用户输入文件名并打开文件_(Python)如何让用户打开文本文件然后更改整数/数字...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python的learn_python_
- 下一篇: awk 内嵌正则 提取字符串_干货-Sh