首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有输入函数和多个条件检查的Python循环

带有输入函数和多个条件检查的Python循环
EN

Stack Overflow用户
提问于 2020-02-14 12:52:23
回答 2查看 87关注 0票数 1

我正在解决以下问题,并遇到无法正确定义决策运算符或while循环的情况。

任务:

客户每月的折扣取决于他们签下的合同的期限,如下所示:

3-6个月2%折扣

7-12个月5%折扣

12个月以上10%折扣

这个程序应该询问用户他们的名字和他们的游戏包的每月费用。然后它应该要求他们输入他们想要的合同长度。最长合同期限为18个月。该程序应最终显示输入的详细信息和最终的包装成本与折扣申请。

代码语言:javascript
复制
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))

错误我有

代码语言:javascript
复制
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循环下重复输入函数。有什么帮助吗?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-14 13:03:35

我建议您在final_cost上设置一个条件,如:

代码语言:javascript
复制
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")
票数 0
EN

Stack Overflow用户

发布于 2020-02-14 13:38:55

以下是另一个解决方案:

代码语言:javascript
复制
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"))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60226732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档