这是我编写的代码,用于尝试显示一个人是否能够投票,在考虑年龄和选举类型之后,但在我输入选举类型之后,它停止了。 有人可以帮忙吗? 这是我的代码:
def Validation():
if election == 'EU' or election == 'UK':
if age < 110 and age > 18:
print('You are eligable to vote in this election')
else:
print('You are not eligable to vote in this election')
if election is 'Scottish' or election is'local':
if age < 110 and age > 16:
print('You are eligable to vote in this election')
else:
print('You are not eligable to vote in this election')
答案 0 :(得分:2)
放==
代替is
。另请注意,==
应匹配每个字符才能成为真实(这有点不可思议,但只记得你),所以如果你有一个名为&#的选择34;的→强> OCAL&#34;并且你试图与&#34; l ocal&#34;进行比较,它不一样。
您的代码应如下所示:
def Validation():
if election == 'EU' or election == 'UK':
if age < 110 and age > 18:
print('You are eligable to vote in this election')
else:
print('You are not eligable to vote in this election')
if election == 'Scottish' or election == 'local':
if age < 110 and age > 16:
print('You are eligable to vote in this election')
else:
print('You are not eligable to vote in this election')
答案 1 :(得分:1)
除了@Fusseldieb写的内容之外,考虑将配置与验证功能分开。
规则可以这样表达:
rules = {
'UK': {'min-age': 18, 'max-age': 110},
'EU': {'min-age': 18, 'max-age': 110},
'Scottish': {'min-age': 16, 'max-age': 110},
'local': {'min-age': 16, 'max-age': 110},
}
通过这种方式,验证功能变得更短,与当前方法相比,如果规则集变大,则不需要进行任何更改。
def Validation(election):
if election in rules:
rule = rules[election]
if age >= rule['min-age'] and age <= rule['max-age']:
print('You are eligible to vote in this election')
else:
print('You are not eligible to vote in this election')
else:
print('No rules configured for this country')
答案 2 :(得分:0)
免责声明:以下不是我通常做的事情,也不是本网站上经常发生的事情。它到目前为止超出了问题范围,几乎可以归结为101或教程。
您的代码存在多个问题,通过发现错误并指向您,可以轻松修复这些问题。需要从头开始重新解决问题的整个方法。您尝试同时处理许多事情,这总是导致代码具有互锁问题。
让我们分解您的尝试。
更基本的是,你想要这样做:
这些步骤可以用伪代码表示:
def input_value():
while True:
value = input('Please enter a value: ')
if value == 'valid':
return value
所以我们有一个无限循环,一直询问用户一个值,只有当值正常时我们才会返回它。
要求一个整数,该函数可能如下所示:
def input_int():
while True:
value = input('Please enter a number: ')
if value.isdigit():
return int(value)
要求一个属于某个范围的整数,如年龄值,我们可以使用相同的模式并使用input_int()
函数:
def input_int_in_range(min, max):
while True:
value = input_int()
if value >= min and value <= max:
return value
else:
print('Please input values between %i and %i.' % (min, max))
注意else:
分支在第一次错误输入后如何通知用户有效范围。
现在假设我们有dict
投票规则,如我的其他答案所示:
regions = {
'UK': {'min-age': 18, 'max-age': 110},
'EU': {'min-age': 18, 'max-age': 110},
'Scottish': {'min-age': 16, 'max-age': 110},
'Local': {'min-age': 16, 'max-age': 110},
}
我们可以编写另一个函数,让用户通过键选择其中一个。该函数很好地遵循既定模式:
def input_choose(dict):
while True:
value = input('Please input your choice: ')
if value in dict:
return dict[value]
else:
print('Valid choices are: %s' % ', '.join(dict.keys()))
现在我们已经准备好所有基本部件并将它们组合在一起:
# main program
while True:
print("\nPlease enter your age.")
age = input_int_in_range(0, 110)
print("\nPlease enter the election you are voting for.")
rule = input_choose(rules)
if age >= rule['min-age'] and age <= rule['max-age']:
print("\nYou are eligible to vote in this election.\n")
else:
print("\nYou are not eligible to vote in this election.\n")
作为练习,您可以创建验证功能,但每个输入步骤设计的方式都是自我验证的,因此最终验证步骤并非真正必要。