使用Python 2.7.5解决宇宙学中的任务

时间:2015-03-21 04:54:11

标签: python input raw-input

我正在寻找一段代码,它将红移列表(即数字)作为用户的输入,用空格分开,然后自动分配给变量,如a,b,c,d .....米,N,O。

例如,如果用户给出“0.32 0.53 0.77 0.91 1.1 1.4”作为输入,则程序应将0.32分配给变量a,将0.53分配给变量b,将0.77分配给变量c,依此类推。我不希望用户输入超过10个数字。

我一直在尽我所能使用raw_input函数,但迄今为止没有成功。

在此之后,我计划使用简单的公式A=3800/(1+a)来找到红移“a”的物体在光学范围内发射的最短的静止帧波长,并为所有人重复此过程其他机构的红移由用户提供。但这部分应该没有问题。我真正的绊脚石如上所述。

1 个答案:

答案 0 :(得分:1)

我们假设您使用raw_input()来自用户的字符串:

astr = raw_input('Input: ')

然后,有很多方法可以解决这个问题。但最简单的可能就是将该字符串拆分为一个列表:

alist = astr.split(' ') # returns ['0.32', '0.53', '0.77', '0.91', '1.1', '1.4']

由于您可能希望它们是浮点数而不是字符串,因此您可以使用列表推导:

alist = [float(val) for val in astr.split(' ')] # returns [0.32, 0.53, 0.77, 0.91, 1.1, 1.4]

你也可以把它全部放在字典里:

dic = {j:float(val) for j, val in enumerate(astr.split(' '))}

如果你想用字母命名,如果你确定它们会少于26,你可以这样做:

from string import ascii_lowercase as letters
dic = {letters[j]:float(val) for j, val in enumerate(astr.split(' '))}

最后,您可以使用exec,但这种形式非常糟糕,我不会推荐它。