python - 不同的输入失败后,输入提示不返回到先前的提示
问题描述
我有这个任务来检查是否输入了姓名和年龄,如果它们是空白的,它会提示用户再次输入。
当它到达年龄输入时,如果用户输入一个空白输入,那么它将正确提示他们,但如果用户输入一个无效输入,然后再次输入一个空白输入,它不会再次给他们空白输入提示,只是无效输入。我不确定如何解决这个问题。
这是我的代码:
import test_module as module
print("\nAssignment 4")
def main():
"""
Collects first name input, checks if input was blank and prompts for entry until entered.
"""
firstname=input("\nPlease enter your first name. ")
while module.is_field_blank(firstname)==False:
print("\nFirst name must be entered.")
firstname=input("\nPlease enter your first name. ")
continue
"""
Collects last name input, checks if input was blank and prompts for entry until entered.
"""
lastname=input("\nPlease enter your last name. ")
while module.is_field_blank(lastname)==False:
print("\nLast name must be entered.")
lastname=input("\nPlease enter your last name. ")
continue
"""
Collects age input, checks if field is blank, if field is not blank checks if field is a number, prompts for entry until entered for both
"""
raw_age=input("\nWhat is your age? ")
while module.is_field_blank(raw_age)==False:
print("\nAge must be entered.")
raw_age=input("\nwhat is your age? ")
continue
while module.is_field_a_number(raw_age)==False:
print("\nAge must be a number.")
raw_age=input("\nWhat is your age? ")
continue
"""
Changes raw_age string to age integer
"""
age=int(raw_age)
"""
Brigns all inputs together, checks against age integer and outputs depending.
"""
if age>40:
print("\nWell, "+firstname+" "+lastname+" it looks like you are over the hill.")
else:
print("\nIt looks like you have many programming years ahead of you "+firstname+" "+lastname)
if __name__ == "__main__":
main()
print("\nEnd of assignment 4")
这是我的模块代码:
def is_field_blank(arg):
"""
This checks if the field is blank
"""
if arg == "":
return False
else:
return True
def is_field_a_number(yrs):
"""
This checks if the entered field is a number or not
"""
if yrs.isdigit() !=True:
return False
else:
return True
解决方案
您可以使用带有检查和中断的 while True 循环来遍历提示列表并返回值
def prompt2ints(*args):
vals = []
for i in args:
while True:
val = input(i)
if val == "": print("you must enter a value")
try:
if int(val): vals.append(val); break
except ValueError: print("value needs to be int")
return vals
print(prompt2ints("one prompt here: ", "something here too: ")
输出:
enter age: 10
something here too: 20
['10', '20']
推荐阅读
- java - 如何总结地图中的双打
使用Java Stream分组后列表中的对象 - ios - 表达式类型 '(Bool, Error?) -> Void' 在没有更多上下文的情况下是模棱两可的
- python - 使用 Python Regex 提取代码的非注释部分
- kotlin - 为什么 inc() 不能定义为与接收者类型不同的类中的扩展函数?
- python-3.x - 如何将 PyQt QProcess 窗口置于前面?
- python - 删除 Pandas 数据框中未使用的类别
- java - 在 Java GUI 中禁用组件而不将其变灰
- visual-c++ - 如何从 _LOADED_IMAGE 结构访问所有 PE 节标题?
- file - 如何使用批处理文件从需要登录用户名/密码的网站下载?
- c - 如何在套接字连接中接收 tcp 标志