2016-04-01 18 views
0

Numaraları yeniden düzenleyerek basit matematik dönüşümü gerçekleştirmesi gereken bir komut dosyası oluşturdum.Lütfen bu hesapla python "sihiri" ni çözün.

yapması gerekenler:

x = 777.0 
y = 5 
calc = x/y # 155.4 

... Pseudocode:

Rearrange numbers (last digit + first) = 555. 
Difference from 777 and 555 = 222 
Add 222 to 555 = 777 

Temelde gerçek bir hesaplama yapmadan orijinal değişken yeniden oluşturmalıdır ancak bunun yerine sadece sayıları yeniden düzenlemek ve ekleyin.

Komut dosyası tasarımı nedeniyle, yalnızca 333.3 gibi 4 basamaklı sayılarla çalışmasını bekledim. 2543.6452 gibi, (akademik olmayan) bakış açımdan en azından imkansız gibi gözüküyor. Birisi bana burada ne olduğunu anlatır mı? Kod doğru çalışıyor mu, yoksa anlamadığım bir şey mi yarattım? Bana bir yanılsama benziyor. Burada bir miktar yer değiştirme yapalım. D

+2

Yani kod tam olarak ne yapmak istediğinizi yapıyor ..... ve .... nasıl olduğunu bilmek Bu yapıyor? – DavidG

+0

Gerçekten değil. Çok fazla ve çok iyi. : D Örneğin, 23135.34674 numarasını alıyorum ve hesaplamaları 23135.34674'ten çok farklı bir sonucu olması gerekiyor. Kod, (en azından bunu beklediğim gibi) yalnızca 666.666 veya 888.8 gibi "simetrik" değerlerle çalışmak üzere tasarlanmıştır: Bana göre, kodum yalnızca y değişkenini alıyor ve sonuç olarak yazdırıyor gibi görünüyor. : D "in_between" değeri, yalnızca ikinci ve üçüncü basamağı hesaba katar. Büyük sayılarla doğru sonucu elde etmek imkansız görünüyor. – Horst23

cevap

1

alt çizgiler okuyun:

Bu şekilde tek satırda yazılabilir
dif = y - to_int 
add = to_int + dif 

:

add = y - to_int + to_int 

ya:

add = y 

Yani tümüyle görmezden sonra tüm bu "sihirli" ve do ile başladığınız şeyi yazdırmak için. Bunun üzerine bir şey koyabilirsin, tüm bu kod sonunda yazdı y :-)

+0

Neden y - to_int değil? Eğer to_int 555 ve y 777 ise 222 olması beklenir. Eğer kodu daha uzun (simetrik olmayan) bir float ile çalıştırırsanız, tamamen farklı bir sonuç çıkarmalısınız çünkü sadece z bölümleri kalmış demektir. Diğer tüm hesaplamalar z'ye dayanır. "Dif = y - to_int" ile sadece yeniden düzenlenmiş z'yi y'den çıkarmak istiyorum. – Horst23

+1

Yorumu anladığımdan emin değilim. Gerçekten de dif y - to_int. Ama neden önemli olduğuna emin değilim. Sonunda "add" adında bir miktar basıyorsunuz ki bu miktar * tam * y'e eşittir. Bunu göstermek için 'dif = y - to_int' satırından önce to_int = to_int * 129736912876348723564' gibi bir şey yapın ve kod hala sonuna kadar' y' basacaktır. (Bu bir int/float taşmasına neden olmadıkça) – Xirtaminu

+0

Şimdi dif'in değerini test ettim ve bu y ile aynı değil! Bana göre bu benim teorimin doğru ve sayı/5'e dayanan her hesaplama sonuç * 5 hesaplanmadan geri alınabilir, bunun yerine sayıları yeniden düzenler. Bu delilik mi yoksa benim spagetti canavarı akıl yanılsaması mı ?! o_0 – Horst23

İlgili konular