Python 如果不满足两个条件,则拒绝或循环用户输入

Python 如果不满足两个条件,则拒绝或循环用户输入,python,loops,input,Python,Loops,Input,我是Python的真正初学者,尽管到目前为止我喜欢Python的每一分钟 我正在制作一个小程序,接受用户的输入,然后用它来做一些事情。我的问题是用户输入的数字必须 1所有加起来不超过一个,即a1+a2+a3\leq 1 2每一个都应1 或者a1>1、a2>1、a3>1等 我觉得这真的很容易实现,但由于我的知识有限,我被卡住了 任何帮助都将不胜感激:-我发现您需要先阅读n,这是用户将输入的百分比数。在此之后,您应该重复读取百分比n次,并使用for语句来实现此目的。现在,您可以添加一个验证,使每个百

我是Python的真正初学者,尽管到目前为止我喜欢Python的每一分钟

我正在制作一个小程序,接受用户的输入,然后用它来做一些事情。我的问题是用户输入的数字必须

1所有加起来不超过一个,即a1+a2+a3\leq 1

2每一个都应<1

以下是我到目前为止的代码,只是最基本的中间部分:

 num_array = list()


  a1  = raw_input('Enter percentage a (in decimal form): ')
  a2 = raw_input('Enter percentage b (in decimal form): ')
  ...
  an = raw_input('Enter percentage n (in decimal form): ')


li = [a1, a2, ... , an]

for s in li:
   num_array.append(float(s))
我很想做一些事情,如果用户的输入超过了要求,就要求用户重新输入

a1+a2+a3>1

或者a1>1、a2>1、a3>1等

我觉得这真的很容易实现,但由于我的知识有限,我被卡住了


任何帮助都将不胜感激:-

我发现您需要先阅读n,这是用户将输入的百分比数。在此之后,您应该重复读取百分比n次,并使用for语句来实现此目的。现在,您可以添加一个验证,使每个百分比在阅读时或最后都小于1。最后,您还要添加所有值,并验证它们的总和不大于1。在所有代码上重复一次,并且只在您愿意的时候退出,因此,如果任何验证失败,您都可以重新开始。您可以从感谢、@gplayer和@WalR开始!这些都是非常有帮助的建议,谢谢你让我思考答案,而不仅仅是给我一个:-哦,天哪!这正是我想要的,很容易理解。感谢您提供了一个很好的答案:-您还可以做些什么来改进它,就是设置一个特定的误差裕度,比如10^-3来捕捉浮点错误。因此,如果1-errorinput_list = [] input_number = 1 while True: input_list.append(raw_input('Enter percentage {} (in decimal form):'.format(input_number)) if float(input_list[-1]) > 1: # Last input is larger than one, remove last input and print reason input_list.remove(input_list[-1]) print('The input is larger than one.') continue total = sum([float(s) for s in input_list]) if total > 1: # Total larger than one, remove last input and print reason input_list.remove(input_list[-1]) print('The sum of the percentages is larger than one.') continue if total == 1: # if the sum equals one: exit the loop break input_number += 1