我正在寻找一段代码,它将红移列表(即数字)作为用户的输入,用空格分开,然后自动分配给变量,如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”的物体在光学范围内发射的最短的静止帧波长,并为所有人重复此过程其他机构的红移由用户提供。但这部分应该没有问题。我真正的绊脚石如上所述。
答案 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
,但这种形式非常糟糕,我不会推荐它。