2016-04-12 43 views
0

我一直在面对这个问题一段时间,仍然无法弄清楚。我制作了一个计算来自同等变量的程序。在其中的一部分中,要求用户逐个输入所有变量的值,并标记应该用字母'n'计算的变量。当用户犯错时,我想有一个重新输入变量值的选项。例如,当用户的输入是BACKSPACE时,它应该跳回到前一个变量并让用户重新输入该值。我希望我描述它够好。你们有一个想法如何使这项工作?感谢您的回应。如何使输入,如果需要可以重新输入

这就是代码的样子。 'premenne'是一个包含相等变量值的字典。 For循环遍历该字典并将输入值分配给每个变量。

premenne = { 
    'm1': 0.0, 
    'c1': 0.0, 
    't1': 0.0, 
    't': 0.0, 
    'm2': 0.0, 
    'c2': 0.0, 
    't2': 0.0 

} 

for x in premenne: 
    premenne[x] = input(x + ': ') 
+0

尚不完全清楚你想要什么:

for x in premenne: while True: try: premenne[x] = float(input('{}: '.format(x))) break except: continue 

最后但并非最不重要的,与所有等于0.0使用该值初始化你的字典。如果你向我们展示了一些关于你迄今为止所做的工作的代码,以及它与一些示例输入一起的问题会更好。 –

+0

您可以显示一些示例输入和预期输出吗? –

+0

这里是...希望它会有所帮助 –

回答

0

你的意思是这样吗?

for x in premenne: 
    while True: 
     try: 
      val = input('{}: '.format(x)) 
      val = float(val) 
     except: 
      # catch-all, conversion to float failed, ask again 
      continue 
     else: 
      premenne[x] = val 
      break 

我故意用更多的代码行比真正需要更多的代码行,让你更好地理解。这个想法是,它会不断要求用户输入一个值为x ,只要该值不能转换为浮点数(因为它看起来像所有的值都是浮点数)

现在更短版本的同样的代码:

premenne = dict.fromkeys(['m1', 'c1', 't1', 't', 'm2', 'c2', 't2'], 0.0) 
+0

这不是我需要的,但无论如何感谢您的时间! –

相关问题