2016-04-06 16 views
0

Bazı ortalamalar, vb. Gerçekleştirmek için hem dize hem de üç float numarası içeren tek bir giriş satırı saklamak için python 2.7'yi almaya çalışıyorum.python 2.7 aynı raw_input satırından bir kayan nokta ve bir dize depolama

ex. girişi:

name, score1, score2, score3 = raw_input().split() 
score1, score2, score3 = [float(score1),float(score2),float(score3)] 

ama nedeniyle dizesine "geçersiz literal" hatası atar: Tom 25 30 20

denedim. Ek olarak, kodum hantal, bu konuda gitmenin daha basit bir yolu olur mu?

Yardımlarınız için teşekkür ederiz!

+3

Kodunuz fonksiyonları ince tam olarak, herhangi bir hata atmak değil. – kindall

cevap

2

Bunu biraz daha gözden geçirebilirsin, ama ne işe yaradı, ne de hantal ya da kötü değil.

>>> user_input = raw_input('Enter your name and three numbers: ').strip().split() 
Enter your name and three numbers: Tom 25 30 20 
>>> name = user_input[0] 
>>> scores = map(float, user_input[1:]) 
>>> name 
'Tom' 
>>> scores 
[25.0, 30.0, 20.0] 

bu şekilde yapmak n1 gibi isimlerle yerine değişkenleri, n2 (her zaman bana öneren bir listesini kullanarak olmalıdır) (scores[0], scores[1] gibi alt simgeler ile) listesini kullanarak anlamına gelir.

map'un float ile kullanılması, üç kez float(var) yazmak zorunda olmadığınız anlamına gelir.

Kullanıcı girişinizde strip()'u da düşünebilirsiniz. Bu özellikle iyi bir fikirdir, özellikle de boşlukta çarpıştığınız için.

+0

Ayrıca geçersiz literal hata hakkında bir yorum. Herhangi bir nedenden ötürü dizgenin yazdırılmamış karakterler içerip içermediğini kontrol edebilir ve onları yüzer hale getirmeden önce bunları kapatabilirsiniz: 'print repr (user_input)' – fips

+0

Evet, farklı bir şey var ve OP'den daha fazla bilgiye ihtiyacımız var. Soruya gönderilen hiçbir şey buna sebep olmamalı, AFAIK. –

+1

Eklenen yardım için hepinize teşekkür ederim. Bundan önce int beklenen bir dize giriyordum, sadece yakalamadım. Python, programlamaya ilk girişimdi, sadece birkaç aydır devam ediyor! – cslewis

0

Böyle sorununuzu çözebilir:

input = raw_input("Give me the input [name number number number]: ").split(" ") 
name = input[0] 
floats = map(float, input[1:]) 
print "I'm your name ", name 
print "I'm your floats ", floats 
print "I'm a sample average ", sum(floats)/len(floats) 

Sen ile herhangi şamandıra alabilirsiniz: yazıldığı gibi

floats[i] 
İlgili konular