2015-07-04 21 views
5

MOOC atamamın bir parçası olarak maksimum ve min değerleri almak için aşağıdaki kodu yazdım. Bu program, kullanıcı tarafından 'bitti' yapılıncaya kadar sürekli olarak kullanıcıdan giriş alır.Python: Maks ve dk fonksiyonunu kullanmadan maksimum ve minimum değer elde etmek için program

'Bitti' yazıldığında, program maksimum ve dak değerleri için sonuç verir. Sorun şu ki, maksimum değer için sonuç her zaman doğrudur, ancak min değerinin sonucu daima "Yok" dur.

largest = None 
smallest = None 
while (True) : 
    inp = raw_input('Enter a number: ') 
    if inp == 'done' : 
     break 
    try: 
     inp = float(inp) 
    except: 
     print 'Invalid input' 
    continue 
    if inp is None or inp > largest: 
     largest = inp 
    if inp is None or inp < smallest: 
     smallest = inp 
print largest, smallest 

cevap

3

Gönderdiğiniz kod, hem büyük hem de küçük olanlar için Hiçbiri vermez. Yakalamayı denedikten sonra bir devam ifadesi vardır, bu yüzden açıkça girmeyi sürdürür ve hiçbir zaman sona ermez. Devam, döngüden sonraki yinelemeye geçmesini söyleyecektir. Dolayısıyla, devam eden blokta (muhtemelen bir girinti hatasıdır) devam etmelidir. İkinci olarak, girdiyi Yok ile karşılaştırıyorsunuz. Ben durum varsa bu sizin bir yazım hatası olduğunu tahmin ('büyük Yok eğer' olması gerektiği değil 'inp Yok eğer')

Modifiye kodu: (koşullarda olmadığını kontrol son 2):

largest = None 
smallest = None 
while (True) : 
    inp = raw_input('Enter a number: ') 
    if inp == 'done' : 
     break 
    try: 
     inp = float(inp) 
    except: 
     print 'Invalid input' 
     continue 
    if largest is None or inp > largest: 
     largest = inp 
    if smallest is None or inp < smallest: 
     smallest = inp 
print largest, smallest 
+3

You devam eden deyim hariç diğer satırın içinde ne olduğunu bilmek kim inp olduğunu bilir (bir ip gibi!) – MasterOdin

+0

Evet üzgünüm bunu kaçırdı! Teşekkürler! @MasterOdin – Quark

+0

İstisna bloğunun amacı, kullanıcı dizge veya başka bir veri türü gibi sayısal değerden başka bir şey girdiyse, sadece Geçersiz Giriş yazdırır ve başka bir veri türüne ihtiyaç duymadığımız için başa dönmesidir. Ve ben bu görevi yaptım. Yardımlarınız için teşekkürler. –

İlgili konular