2016-04-10 11 views
0

"Sen bir yüzücü konum en hızlı zamanı yazdırmak ve en hızlı olanı bulmak için yarış kez tüm karşılaştırmak istiyorum sürekli yarış götüren bir program yazın. Standart girdiden iki kat daha fazla, giriş "daha fazla ırk yok" olana kadar, en hızlı yarış zamanınızı yazdırmanız gerekir. "Python ödev - Listesi kez alıp sorudur MPL On

Kodum piton çalışır ancak MPL üzerinde nedense çalışmıyor. İşte benim kod doğru yapısı şöyle

input("") 
list1=[] 
while input("")!=str("no more races,"): 
    list1.append(float(input(""))) 
    if input("")=="no more races,": 
     print(min(list1)) 
+0

' "artık yarışları,"' zaten bir dizedir; Bunu 'str' işlevine (dize argümanının bir kopyasını döndüren) iletmeye gerek yoktur. – chepner

+0

Her bir döngü iterasyonu için _three times_ giriyorsunuz, sadece bunlardan birini listeye ekliyor ve diğer ikisini de durdurma koşulu için kontrol ediyorsunuz. Cevap olarak kabul edilmemesi mantıklı. – TigerhawkT3

+0

'input()' işlevine yapılan her çağrının başka bir zaman için girdi sorduğunun farkında mısın?))) Sen 'girişi ("")' – zondo

cevap

0

sorun input birden çok kez çağrıda yerine bunu yazarken sadece her dize değerini tasarruf olduğunu. (input için ilk çağrı özellikle işe yaramaz.) Sen nispeten basit kod

list1 = [] 
race_time = input("Enter a race time: ") 
while race_time != "no more races": 
    list1.append(float(race_time)) 
    race_time = input("Enter a race time: ") 
print(min(list1)) 

ile başlayabilir ama bunu biraz can sıkıcı iki yerde input aramak zorunda bulabilirsiniz. Bunun yerine, açıkça (en az bir defa çalıştırır bir döngü için Python desen olan) çıkmak hangi bir "sonsuz" döngü kullanabilir

list1 = [] 
while True: 
    race_time = input("Enter a race time: ") 
    if race_time == "no more races": 
     break 
    list1.append(float(race_time)) 
print(min(list1)) 
0

var: List iken şartı kontrol altında 1., 2.:

Kodunuzda
list1 = [] 
while True: 
    i = input("") # read input only once per iteration 
    if i == "no more races,": 
     break 
    list1.append(float(i)) 
print(min(list1)) 

, yeni girişi yineleme başına üç kez okundu ekleme, 3. kontrolde. Bununla birlikte, tüm bu şeyleri aynı girişle yapmak istersiniz.

0

Eğer büyük bir listesi varsa, ve tüm size İlgilendiğiniz en hızlı zaman, tüm listeyi saklamamaktan daha iyi olabilirsiniz.

race_time = float(input("")) # this is supposing at least one race time 
minimum = race_time 

while race_time != "no more races,": 
    race_time = float(race_time) 
    minimum = min(minimum, race_time) 

print(minimum) 
0

Bu kod, giriş daha 'ırk yok' olana kadar kullanıcıdan giriş alır. Ardından, onları sırayla düzenlemek için listenin tüm öğelerini sıralar. Şimdi en hızlı veya ikinci en hızlı ve hatta sonuncusu bulmak çok basit. En hızlı yarış bulmak için sıralı listenin 0 öğesini yazdırın.

l = [] 
while True: 
    i = input("Enter time of race") 
    if i == "no more races": 
     break 
    l.append(float(i)) 
order=sorted(l) 
print (order[0]) 
0
list1=[] 
x=0 
cap=' ' 
cap=input() 
while cap!='no more races': 
    x=float(cap) 
    list1.append(x) 
    cap=input() 
print(min(list1)) 

Bir şamandıra için bir metin dizesi dönüştürmeye çalışırken bir hata iletisi oluşturmadan çıkış koşulu yakalamak için while döngüsünde önce ilk giriş deyimi koymak zorunda.