2016-04-06 16 views
0

, ben ters ve orta değerini bulabilmesi için bir dizeye bir tamsayı dönüştürmek zorunda kaldı. Bir çözüm olmalı - Python3'ü kullanarak bir dizgeye dönüştürmeden bir tamsayı orta değerini nasıl bulabilirim? Yardımınızı takdir edin. Teşekkürler.nasıl Python3 kullanarak bir dizeye dönüştürmeden bir tamsayı orta değeri bulmak için? Bir sonraki <a href="https://github.com/harishvc/challenges/blob/master/string-next-palindrome.py" rel="nofollow">smallest palindrome problem</a> çözme iken

Örnekler:

  1. girişi = 78.653, sonuç = 6
  2. girişi = 7564, bu bir başlangıç ​​= 5
+0

bize somut çözümler/öneriler sunmak, böylece şu anda bunu yapmak için kullandığınız kod gösterir misiniz:
Bazı verdiği ihtiyaçlarını? – Castaglia

+0

@Castaglia Sadece daha fazla bağlam soru güncellendi. Eğer '//' taban bölümü kullanmak yerine, 'b = olabilir b' 'için – harishvc

cevap

3

sonuçlanır.

import math 

def mid_digit(n): 

    # num of digits 
    a = math.trunc(math.log(n,10)+1)  

    # moving half of digits to the right of decimal point 
    b = n/10 ** round(a/2 + 0.5) 

    # getting the left most decimal digit 
    c = math.trunc(math.modf(b)[0] * 10) 

    return c 
+0

N // 10 ** (a // 2)' ve sonuç olarak' b' C' olabildiğince 'daha sonra bir int olacak son rakamı almak için modulo 10'u kullanın; c = b% 10' veya sadece b% 10'unu döndürün. Ayrıca daha genel olmak istiyorsanız, 0 ve negatifleri kontrol etmeniz gerekir, çünkü 'log', bunlarda tanımlanmaz. – Copperfield

+0

Teşekkürler, önerilerinizi beğendim – roee