2016-04-08 36 views
0

arasına sığdı Bu yüzden dizgimi 1000 - 9999 arasında doğrulanacak şekilde almaya çalışıyorum ve bunu çalıştırmaya çalıştığımda, bunun doğrulanmadığını söyleyerek geri dönüyor. Bu sorunun nasıl düzeltileceğine merak ederek, bir kullanıcının bir dize olarak girdiği 4 rakamı gerçekten okuyabilir. Bir sebepten dolayı bir dize olarak var ve kodumun diğer bölümleri için iyi çalışıyor. özellikle bu sadece bana zor bir zaman veriyor.hanedeki bir dize

if int(digitCode) < int(max) and int(digitCode) > int(min): 
    print("Number is verified!") 
else: 
    print("ERROR not a valid ") 

Edit:

def choiceTwo(digitCode): 

    max = 9999 
    min = 1000 

    digitCode = [int(num) for num in digitCode] 
    for x in digitCode: 

     if x > max: 
      return True 

     if x < min: 
      return False 

def main(): 

    digitCode = str(input("Please enter a 4 digit code: ")) 

    if choiceTwo(digitCode) is True: 
      print("Number is verified!") 

    else: 
      print("ERROR not a valid ") 

cevap

0

4 basamaklı koddaki her sayının bu iki değer arasında olup olmadığını kontrol edebilirsiniz. Fakat her sayı 0-9 aralığındadır, dolayısıyla bu doğru olmaz. Eh, if x > max durumunun 9999'dan büyük olup olmadığını kontrol etmek ve ardından True değerini döndürmek, bu iki değer arasında ilkinizi hesaba katmaz. Bu aralıkta bir sayı olup olmadığını kontrol etmek için ve/veya> operatörleri kullanarak koşullarınızı birlikte yerleştirmeniz gerekir. onlar piton içine yerleşik ve işlevselliğini geçersiz kılma konum olarak

Sen iki değişken min ve max isim olmamalıdır. Durumunuzu da birleştirebilirsiniz. Eğer kapsayıcı olması kabul edilen değerlerle sizin aralığını isteyen değilseniz koşul beri sadece if (expression) yapıyor eğer sadece irade 9999 ve 1000

Orijinal ekstra is True bırakabilirsiniz dışlamak için aşağıdaki koşullarda <= içinde = arasında sürebilir gerçeğin değerini veya "gerçekliği" değerlendirin.

Kullanıcıya, diğer işlevinizdeki hataları önlemek ve girişi doğrulamak için dört basamaklı ve geçerli basamaklar bulunana kadar sürekli olarak 4 basamaklı kod girmesini isteyen bir süre döngüsü ekledim. Hiçbir şey dönen None dönecektir ve eğer durumda Doğru olmak değil olarak değerlendirilebilir beri

Aslında bile else: return False gerekmez, ama orijinaline yakın tutmak için bıraktı. En azı ve en büyük (ya da ana()) işlevinizi biri olarak ilan edip, özlü olmak istiyorsanız if _min <= int(digitCode) <= _max'u kullanabilirsiniz.

def choiceTwo(digitCode): 

    _max = 9999 
    _min = 1000 

    if _min <= digitCode <= _max: 
     return True 
    else: 
     return False 

def main(): 

    digitCode = input("Please enter a 4 digit code: ") 
    while not (digitCode.isdigit() and len(digitCode) == 4): 
     digitCode = input("Please enter a 4 digit code: ") 

    if choiceTwo(int(digitCode)): 
     print("Number is verified!") 

    else: 
     print("ERROR not a valid ") 
main() 
0

O düz eğer açıklamada bunu muhtemelen daha kolay ben hem digitCode max ve min size olarak kullanmıştır belirtti beri bütün tamsayılar emin yaptı kodun başka yerlerinde dizeler.

Düzenleme 2: Ayrıca, ifadelerinizi işlevinizin içinde iki kez kontrol edin; x, max ve min arasındaysa ne olur (şu an sadece x> max ise True değerini döndürür).