python - Python while 循环未按预期执行
问题描述
我正在努力完成我的任务并且一直在苦苦挣扎。这个想法是您选择报告类型,A 或 T。从那里您输入继续输入整数,直到您退出。一旦你退出,它应该打印出报告'T'相加的整数总数;或者对于报告“A”,它应该打印总数,加上输入的整数列表。
我目前遇到的问题来自报告“T”,一旦我输入整数,就不会出错或退出。它只是不断地要求我输入另一个整数。然后从报告“A”中,我输入的每个整数都会出现“无效输入”。我确信我的代码可能还有更多问题,但目前无法解决这些问题。任何指针将不胜感激。谢谢
def adding_report(report):
total = 0
items = []
while True:
user_number = input("Enter an ingteger to add to the total or \"Q\" to quit: ")
if report.upper == "A":
if user_number.isdigit():
total += int(user_number)
items.append(user_number)
elif user_number.upper() == "Q":
break
else:
print("Invalid input\n")
elif report.upper() == "T":
if user_number.isdigit():
total += int(user_number)
elif user_number.upper() == "Q":
break
else:
print("Invalid input\n")
report = input("Report types include All Items (\"A\") or Total Only (\"T\")\nPlease select report type \"A\" or \"T\": ")
while True:
if report.upper() in "A T":
adding_report(report)
else:
print ("Invalid input")
report = input("Please select report type \"A\" or \"T\": ")
解决方案
你的第一个问题是在这一行:
if report.upper == "A":
这总是计算为False
,因为report.upper
它是一个函数对象,而不是一个值。你需要
if report.upper() == "A":
返回值。您还可以重命名输入变量并将其值替换为您想要的内部变量:
report = input("Report types include All Items (\"A\") or Total Only (\"T\")\nPlease select report type \"A\" or \"T\": ")
report = report.upper()
upper
这样可以节省您每次访问该信件时的麻烦和打电话的时间。
请查看您的代码是否有重复的项目和拼写错误;从长远来看,你会省去头疼的问题——我从个人经验中知道。
推荐阅读
- java - 使用 Spring Security 验证来自 Google 的访问令牌
- java - 为什么 MediaPlayer 在 Android 中的应用重启状态下停止?
- azure - 如何命中在 Azure 批处理节点内运行的烧瓶 API?
- c# - Entity Framework 6.0 DBContex 会自动关闭吗?
- html - 如果复选框为真或假,如何更新
- blazor - 如何在同一 Web 中同时使用 Blazor 客户端和服务器
- asynchronous - 使用 redux-saga 对 redux store 进行异步调用
- python - 如果名称图像与 Python 中 csv 文件中的 image_id 匹配,则从文件夹中裁剪多张图像
- ubuntu - 如何在 Ubuntu 上安装 web3?
- django - 如何确定 django manytomanyfield 中更改了哪些元素