2016-03-18 9 views
1

Girilen sayının int olup olmadığını kontrol etmek için bir if ifadesi oluşturmak istiyorum. Ben bir girişi böldüğümde ne yapacağımı bilmiyorum (3 ve 3 ile bir tane oluşturuldunuz). Bunu istiyorum, böylece bir harf girerseniz, bir hata mesajı üretmez. ,Bir sayının int veya str python olup olmadığını nasıl kontrol edilir

while directionloop ==0: 
    while DAmountLoop==0: 
     direction=input('How do you want to move? Your answer should look like this 4u, this moves you up 4: ') 
     directiondirection=str(direction[1]) 
     directionamount=(direction[0]) 
     if type(directionamount) != int: 
      print('You need to enter a number for the amount you want to move') 
     elif type(directionamount) == int: 
      directionamount=int(direction[0]) 
      DAmountLoop=1 
+0

"Girdi" kullanırsanız, – kmario23

cevap

2

direction türünden her zaman olacaktır strinput() getiri str çünkü: Burada

Soru içinde kodudur. Dolayısıyla, direction[0]'un türü de her zaman str'dir ( direction boş değil). Bu nedenle, type(direction[0]) != int her zaman True olacaktır. Ancak, dizeler, içeriklerini kontrol eden yöntemlere sahiptir. Bu durumda, str.isnumeric() kullanabilirsiniz:
move = input('How do you want to move? ') 
direction = direction[1] 
amount = direction[0] 
if not amount.isnumeric(): 
     print('You need to enter a number for the amount') 

Ayrıca giriş 2 karakterden daha kısaysa bu bir IndexError yükseltmek unutmayın. Bunun için belirli bir kontrol yapmak isteyebilirsiniz veya tüm eşleşen mantığı birleştirmek için regular expression kullanabilirsiniz. Ayrıca, döngü ile ilgili olarak: kullanıcı girdisinin doğrulanması için genel bir reçete için bkz. this question.

+0

girdiğiniz veri türünden bağımsız olarak her zaman "dize" temsilini verir. Teşekkürler, çalışıyorum. Kodumda bazı diğer konuları sıraya koyacağım, sonra bağlandığınız doğrulama postasına bakacağım, kodumun gönderdiğim gibi doğrulaması olan diğer 5 parçam var. –

İlgili konular