问题描述
如果存储在items
中的输入正确,则items
将保留原始值。但是,如果输入不正确,则会提示用户输入新的items
并将该值存储在原始items
变量中。我的问题是我的代码未将新输入存储在全局items
变量中。我尝试使用global
关键字无济于事。我不能使用for/while
循环,而只能使用标准库。
这是我的代码:
items = input("Please enter integers").split()
items = list(map(int,items))
def checksYn(p):
if max(p) > 100 or min(p) < -100:
new_items = input("Please enter integers between -100 and 100").split()
new_items = list(map(int,new_items))
checksYn(new_items)
global items
items = p
print(items)
解决方法
以下代码将解决您的问题:
items = input("Please enter integers").split()
items = list(map(int,items))
def checksYn(p):
if max(p) > 100 or min(p) < -100:
new_items = input("Please enter integers between -100 and 100").split()
new_items = list(map(int,new_items))
return checksYn(new_items)
else:
return p
x=checksYn(items)
print(x)
,
让我们设计一个像这样的程序-
Please enter integers:
1 2 300
Please enter integers between -100 and 100:
1 two 3
Please enter integers between -100 and 100:
-5 1 2 three
Please enter integers between -100 and 100:
-99 1 2 3
done: [-99,1,2,3]
我们开始对递归程序main
-
def main(nums):
try:
return validate(nums)
except:
return main(retry())
nums = main(init())
print(f"done: {nums}")
现在我们只实现init
和retry
-
def init():
return get_user_input("Please enter integers")
def retry():
return get_user_input("Please enter integers between -100 and 100")
def get_user_input(prompt):
return input(f"{prompt}:\n").split()
最后写出validate
-
def validate(nums):
r = []
for x in map(int,nums):
if x < -100 or x > 100:
raise ValueError
else:
r.append(x)
return r
大功告成!