Python中输入不匹配时如何实现循环重新获取输入?
解决输入不匹配时循环获取输入的问题
原代码的问题分析
- 第一段代码用
if判断:输入不匹配时仅打印一次提示,程序不会重新获取输入,直接继续执行后续逻辑或终止,无法实现循环输入的需求。 - 第二段代码的
while循环:循环体内没有重新调用input()更新buy的值,导致buy始终是最初的不匹配值,循环条件永远成立,因此会无限打印Please try again。
正确实现代码
写法一:在循环内重新获取输入更新变量
print('What would you like to purchase?') buy = input('(Enter what you would like to purchase?)') while buy not in items_for_sale_today2: print('Please try again') # 关键:循环内重新获取输入,更新buy的值 buy = input('(Enter what you would like to purchase?)') # 输入正确后,执行购买数量输入 purchase = input(f'How many {buy} would you like to purchase?')
写法二:用while True循环,符合条件时退出
print('What would you like to purchase?') while True: buy = input('(Enter what you would like to purchase?)') if buy in items_for_sale_today2: # 输入正确,退出循环 break print('Please try again') purchase = input(f'How many {buy} would you like to purchase?')
注意点
原代码中的self.buy属于错误用法:如果这段代码不是在类的方法中,不需要使用self,直接用变量buy即可;如果是在类方法内,需要先将buy定义为实例属性(即self.buy = input(...)),但从代码结构看更偏向普通脚本,直接使用变量buy即可。另外用f-string格式化字符串比format()更简洁直观。
内容的提问来源于stack exchange,提问作者Kevin Koh
相关产品推荐
相关产品推荐

