Python try except 指令中的 while 循环
Python while loop in try except instruction
我有简单的代码:
def simpleMethod():
try:
list_to_app = []
number_of_a = input('\nHow many a you want to create? ')
number_of_a = int(number_of_a)
for i in range(number_of_a):
user_a = input('\nPlease type here some track: ')
list_to_app.append(user_a.lower())
except ValueError:
stderr.write('Type error - please provide an integer character')
simpleMethod()
我不想使用 while True:...
如何为这种流程制作一些循环(我认为 while 在这种情况下会很好):
- 用户类型非整数
- 节目显示
Type error - please provide an integer character
- 程序回到1.步
这是一个简单的方法,但我卡住了。
添加一个while True
循环来重复try
块,直到它可以成功break
。您可能还想 return 您正在构建的列表,以便调用者可以访问它:
def simpleMethod():
list_to_app = []
while True:
try:
number_of_a = input('\nHow many a you want to create? ')
number_of_a = int(number_of_a)
break
except ValueError:
stderr.write('Type error - please provide an integer character')
for i in range(number_of_a):
user_a = input('\nPlease type here some track: ')
list_to_app.append(user_a.lower())
return list_to_app # no point building a list you don't return!
tracks = simpleMethod()
构建列表的一种更简单的方法是推导——您实际上可以将几乎整个函数放在 while
内的单个推导语句中,因为异常将引发到外循环。您可能还想让函数名称更具描述性:
from typing import List
def get_user_tracks() -> List[str]:
"""Prompt the user for a list of tracks."""
while True:
try:
return [
input('\nPlease type here some track: ')
for _ in range(int(input('\nHow many a you want to create? ')))
]
except ValueError:
stderr.write('Type error - please provide an integer character')
tracks = get_user_tracks()
我有简单的代码:
def simpleMethod():
try:
list_to_app = []
number_of_a = input('\nHow many a you want to create? ')
number_of_a = int(number_of_a)
for i in range(number_of_a):
user_a = input('\nPlease type here some track: ')
list_to_app.append(user_a.lower())
except ValueError:
stderr.write('Type error - please provide an integer character')
simpleMethod()
我不想使用 while True:...
如何为这种流程制作一些循环(我认为 while 在这种情况下会很好):
- 用户类型非整数
- 节目显示
Type error - please provide an integer character
- 程序回到1.步
这是一个简单的方法,但我卡住了。
添加一个while True
循环来重复try
块,直到它可以成功break
。您可能还想 return 您正在构建的列表,以便调用者可以访问它:
def simpleMethod():
list_to_app = []
while True:
try:
number_of_a = input('\nHow many a you want to create? ')
number_of_a = int(number_of_a)
break
except ValueError:
stderr.write('Type error - please provide an integer character')
for i in range(number_of_a):
user_a = input('\nPlease type here some track: ')
list_to_app.append(user_a.lower())
return list_to_app # no point building a list you don't return!
tracks = simpleMethod()
构建列表的一种更简单的方法是推导——您实际上可以将几乎整个函数放在 while
内的单个推导语句中,因为异常将引发到外循环。您可能还想让函数名称更具描述性:
from typing import List
def get_user_tracks() -> List[str]:
"""Prompt the user for a list of tracks."""
while True:
try:
return [
input('\nPlease type here some track: ')
for _ in range(int(input('\nHow many a you want to create? ')))
]
except ValueError:
stderr.write('Type error - please provide an integer character')
tracks = get_user_tracks()