我正在解决以下问题,并遇到无法正确定义决策运算符或while循环的情况。
任务:
客户每月的折扣取决于他们签下的合同的期限,如下所示:
3-6个月2%折扣
7-12个月5%折扣
12个月以上10%折扣
这个程序应该询问用户他们的名字和他们的游戏包的每月费用。然后它应该要求他们输入他们想要的合同长度。最长合同期限为18个月。该程序应最终显示输入的详细信息和最终的包装成本与折扣申请。
contract_length = 0
final_cost = 0
#prompt the user to enter their name
user_name = input("What is your name? ")
#prompt the user to enter monthly cost for the game package
package_cost = float(input("Monthly cost of your game package: "))
while contract_length > 0 and contract_length <= 18:
#prompt the user to enter the contract length
contract_length = int(input("Enter the contract length you would like: "))
#selection statement to calculate final cost
if contract_length > 12:
discount = (package_cost * 0.1)
final_cost = format(package_cost - discount,".2f")
elif contract_length > 6:
discount = (package_cost * 0.05)
final_cost = format(package_cost - discount, ".2f")
elif contract_length >= 3:
discount = (package_cost * 0.02)
final_cost = format(package_cost - discount, ".2f")
else:
print("Invalid entry")
#display results
print("Name " +user_name)
print("Package Cost £",str(package_cost))
print("Months in Contract " , str(contract_length))
print("The final cost is £",str(final_cost))错误我有
What is your name? Jhon
Monthly cost of your game package: 35.12
Name Jhon
Package Cost £ 35.12
Months in Contract 0
The final cost is £ 0
>>> 我甚至尝试了“和”to“或”,但是对于或操作符,它开始在while循环下重复输入函数。有什么帮助吗?谢谢。
发布于 2020-02-14 13:03:35
我建议您在final_cost上设置一个条件,如:
contract_length = 0
final_cost = 'none'
#...
while final_cost == 'none':
#prompt the user to enter the contract length
contract_length = int(input("Enter the contract length you would like: "))
if contract_length > 18:
print("Invalid entry")
continue
#selection statement to calculate final cost
if contract_length > 12:
discount = (package_cost * 0.1)
final_cost = format(package_cost - discount,".2f")
elif contract_length > 6:
discount = (package_cost * 0.05)
final_cost = format(package_cost - discount, ".2f")
elif contract_length >= 3:
discount = (package_cost * 0.02)
final_cost = format(package_cost - discount, ".2f")
else:
print("Invalid entry")发布于 2020-02-14 13:38:55
以下是另一个解决方案:
contract_length = 0
final_cost = 0
package_cost = 0
user_name = None
while not user_name:
user_name = input("What is your name? ")
while package_cost <= 0:
package_cost = input("Monthly cost of your game package: ")
if not package_cost.isdigit():
package_cost = 0
package_cost = float(package_cost)
while not (3 <= contract_length <= 18):
contract_length = input("Enter the contract length you would like: ")
if not contract_length.isdigit():
contract_length = 0
contract_length = int(contract_length)
if contract_length > 12:
discount = 0.1
elif contract_length > 6:
discount = 0.05
elif contract_length >= 3:
discount = 0.02
else:
discount = 0
final_cost = package_cost - (package_cost * discount)
print("Name", user_name)
print("Package Cost £", format(package_cost, ".2f"))
print("Months in Contract", contract_length)
print("The final cost is £", format(final_cost, ".2f"))https://stackoverflow.com/questions/60226732
复制相似问题