Döngüler ile ilgili

Merhaba, benim şöyle altta paylaştığım şekilde ufak bir uygulamam var. Program başlatıldığında klasik “Hoşgeldiniz” vs. mesajı veriliyor. Ben kullanıcıya sürekli bu mesajı vermek istemiyorum, örneğin Mars’ın bize uzaklığını öğrendi ve devam etmek istedi. Bunu yapınca ekrana yine “Hoşgeldiniz” mesajı geliyor benim yapmak istediğim ise kullanıcı devam etmek istediği takdirde farklı bir mesaj göstermek.

import time

hiz = 300000

merkur = 77000000
venus = 38000000
mars = 55000000
jupiter = 591000000
saturn = 1000000000
uranus = 2000000000
neptun = 4000000000

while True:
	sunum = """\n\nHoşgeldiniz, bu program Güneş Sistemi'mizdeki gezegenlerin  bize ne kadar uzakta olduğunu hesaplar.\nNot: Işık Hızı, ışığın boşluktaki hızına verilen isimdir.   Işığın boşlukta katettiği yol, saniyede 300.000km'dir.
	1- Merkür
	2- Venüs
	3- Mars
	4- Jüpiter
	5- Satürn
	6- Uranüs
	7- Neptün
	Dünya'mıza olan uzaklığını öğrenmek istediğiniz gezegeni listedeki numarasıyla belirtin\n"""
	secenekler = ["e", "E", "evet", "Evet", "EVET"]
	print(sunum)
	hangiGezegen = input("-----> ")
	
	if hangiGezegen == "1":
		isikHiziMerkur = float(merkur / hiz)
		kmMerkur = float(isikHiziMerkur * hiz)
		print("\nMerkür bize ",isikHiziMerkur, "m/s Işık Hızı uzakta. \nkm olarak da ", kmMerkur, "km uzaktadır.\n")
		
		devam = input("Devam etmek istiyor musunuz? E/H: ")
		if devam in secenekler:
			continue
		else:
			print("Çıkılıyor...")
			time.sleep(1)
			break

	elif hangiGezegen == "2":
		isikHiziVenus = float(venus / hiz)
		kmVenus = float(isikHiziVenus * hiz)
		print("\nVenüs bize ",isikHiziVenus, "m/s Işık Hızı uzakta. \nkm olarak da ", kmVenus, "km uzaktadır.\n")
		
		devam = input("Devam etmek istiyor musunuz? E/H: ")
		if devam in secenekler:
			continue
		else:
			print("Çıkılıyor...")
			time.sleep(1)
			break

	elif hangiGezegen == "3":
		isikHiziMars = float(mars / hiz)
		kmMars = float(isikHiziMars * hiz)
		print("\nMars bize ",isikHiziMars, "m/s Işık Hızı uzakta. \nkm olarak da ", kmMars, "km uzaktadır.\n")
		
		devam = input("Devam etmek istiyor musunuz? E/H: ")
		if devam in secenekler:
			continue
		else:
			print("Çıkılıyor...")
			time.sleep(1)
			break

	elif hangiGezegen == "4":
		isikHiziJupiter = float(jupiter / hiz)
		kmJupiter = float(isikHiziJupiter * hiz)
		print("\nJupiter bize ",isikHiziJupiter, "m/s Işık Hızı uzakta. \nkm olarak da ", kmJupiter, "km uzaktadır.\n")
		
		devam = input("Devam etmek istiyor musunuz? E/H: ")
		if devam in secenekler:
			continue
		else:
			print("Çıkılıyor...")
			time.sleep(1)
			break

	elif hangiGezegen == "5":
		isikHiziSaturn = float(saturn / hiz)
		kmSaturn = float(isikHiziSaturn * hiz)
		print("\nSatürn bize ",isikHiziSaturn, "m/s Işık Hızı uzakta. \nkm olarak da ", kmSaturn, "km uzaktadır.\n")
		
		devam = input("Devam etmek istiyor musunuz? E/H: ")
		if devam in secenekler:
			continue
		else:
			print("Çıkılıyor...")
			time.sleep(1)
			break

	elif hangiGezegen == "6":
		isikHiziUranus = float(uranus / hiz)
		kmUranus = float(isikHiziUranus * hiz)
		print("\nUranüs bize ",isikHiziUranus, "m/s Işık Hızı uzakta. \nkm olarak da ", kmUranus, "km uzaktadır.\n")
		
		devam = input("Devam etmek istiyor musunuz? E/H: ")
		if devam in secenekler:
			continue
		else:
			print("Çıkılıyor...")
			time.sleep(1)
			break

	elif hangiGezegen == "7":
		isikHiziNeptun = float(neptun / hiz)
		kmNeptun = float(isikHiziNeptun * hiz)
		print("\nNeptün bize ",isikHiziNeptun, "m/s Işık Hızı uzakta. \nkm olarak da ", kmNeptun, "km uzaktadır.\n")
		
		devam = input("Devam etmek istiyor musunuz? E/H: ")
		if devam in secenekler:
			continue
		else:
			print("Çıkılıyor...")
			time.sleep(1)
			break

sunum değişkenini döngünün dışına alın. print() fonksiyonu da sunum'u bir defaya mahsus olmak üzere ekrana yazdırsın. Mesajınızı da continue deyimini kullanmadan önce yazın. Sonra continue deyimini kullanın.

1 Beğeni

Teşekkürler, son hali bu;

import time

hiz = 300000

merkur = 77000000
venus = 38000000
mars = 55000000
jupiter = 591000000
saturn = 1000000000
uranus = 2000000000
neptun = 4000000000

sunum = """Hoşgeldiniz, bu program Güneş Sistemi'mizdeki gezegenlerin  bize ne kadar uzakta olduğunu hesaplar.Not: Işık Hızı, ışığın boşluktaki hızına verilen isimdir.Işığın boşlukta katettiği yol, saniyede 300.000km'dir.
	1- Merkür
	2- Venüs
	3- Mars
	4- Jüpiter
	5- Satürn
	6- Uranüs
	7- Neptün
	Dünyamıza olan uzaklığını öğrenmek istediğiniz gezegeni listedeki numarasıyla belirtin."""

print(sunum)

while True:
	
	secenekler = ["e", "E", "evet", "Evet", "EVET"]
	hangiGezegen = input("-----> ")
	
	if hangiGezegen == "1":
		isikHiziMerkur = float(merkur / hiz)
		kmMerkur = float(isikHiziMerkur * hiz)
		print("\nMerkür bize ",isikHiziMerkur, "m/s Işık Hızı uzakta. \nkm olarak da ", kmMerkur, "km uzaktadır.\n")
		
		devam = input("Devam etmek istiyor musunuz? E/H: ")
		if devam in secenekler:
			print("""
	1- Merkür
	2- Venüs
	3- Mars
	4- Jüpiter
	5- Satürn
	6- Uranüs
	7- Neptün
	Dünya'mıza olan uzaklığını öğrenmek istediğiniz gezegeni listedeki numarasıyla belirtin\n""")
			continue
		else:
			print("Çıkılıyor...")
			time.sleep(1)
			break

	elif hangiGezegen == "2":
		isikHiziVenus = float(venus / hiz)
		kmVenus = float(isikHiziVenus * hiz)
		print("\nVenüs bize ",isikHiziVenus, "m/s Işık Hızı uzakta. \nkm olarak da ", kmVenus, "km uzaktadır.\n")
		
		devam = input("Devam etmek istiyor musunuz? E/H: ")
		if devam in secenekler:
			print("""
	1- Merkür
	2- Venüs
	3- Mars
	4- Jüpiter
	5- Satürn
	6- Uranüs
	7- Neptün
	Dünya'mıza olan uzaklığını öğrenmek istediğiniz gezegeni listedeki numarasıyla belirtin\n""")
			continue
		else:
			print("Çıkılıyor...")
			time.sleep(1)
			break

	elif hangiGezegen == "3":
		isikHiziMars = float(mars / hiz)
		kmMars = float(isikHiziMars * hiz)
		print("\nMars bize ",isikHiziMars, "m/s Işık Hızı uzakta. \nkm olarak da ", kmMars, "km uzaktadır.\n")
		
		devam = input("Devam etmek istiyor musunuz? E/H: ")
		if devam in secenekler:
			print("""
	1- Merkür
	2- Venüs
	3- Mars
	4- Jüpiter
	5- Satürn
	6- Uranüs
	7- Neptün
	Dünya'mıza olan uzaklığını öğrenmek istediğiniz gezegeni listedeki numarasıyla belirtin\n""")
			continue
		else:
			print("Çıkılıyor...")
			time.sleep(1)
			break

	elif hangiGezegen == "4":
		isikHiziJupiter = float(jupiter / hiz)
		kmJupiter = float(isikHiziJupiter * hiz)
		print("\nJupiter bize ",isikHiziJupiter, "m/s Işık Hızı uzakta. \nkm olarak da ", kmJupiter, "km uzaktadır.\n")
		
		devam = input("Devam etmek istiyor musunuz? E/H: ")
		if devam in secenekler:
			print("""
	1- Merkür
	2- Venüs
	3- Mars
	4- Jüpiter
	5- Satürn
	6- Uranüs
	7- Neptün
	Dünya'mıza olan uzaklığını öğrenmek istediğiniz gezegeni listedeki numarasıyla belirtin\n""")
			continue
		else:
			print("Çıkılıyor...")
			time.sleep(1)
			break

	elif hangiGezegen == "5":
		isikHiziSaturn = float(saturn / hiz)
		kmSaturn = float(isikHiziSaturn * hiz)
		print("\nSatürn bize ",isikHiziSaturn, "m/s Işık Hızı uzakta. \nkm olarak da ", kmSaturn, "km uzaktadır.\n")
		
		devam = input("Devam etmek istiyor musunuz? E/H: ")
		if devam in secenekler:
			print("""
	1- Merkür
	2- Venüs
	3- Mars
	4- Jüpiter
	5- Satürn
	6- Uranüs
	7- Neptün
	Dünya'mıza olan uzaklığını öğrenmek istediğiniz gezegeni listedeki numarasıyla belirtin\n""")
			continue
		else:
			print("Çıkılıyor...")
			time.sleep(1)
			break

	elif hangiGezegen == "6":
		isikHiziUranus = float(uranus / hiz)
		kmUranus = float(isikHiziUranus * hiz)
		print("\nUranüs bize ",isikHiziUranus, "m/s Işık Hızı uzakta. \nkm olarak da ", kmUranus, "km uzaktadır.\n")
		
		devam = input("Devam etmek istiyor musunuz? E/H: ")
		if devam in secenekler:
			print("""
	1- Merkür
	2- Venüs
	3- Mars
	4- Jüpiter
	5- Satürn
	6- Uranüs
	7- Neptün
	Dünya'mıza olan uzaklığını öğrenmek istediğiniz gezegeni listedeki numarasıyla belirtin\n""")
			continue
		else:
			print("Çıkılıyor...")
			time.sleep(1)
			break

	elif hangiGezegen == "7":
		isikHiziNeptun = float(neptun / hiz)
		kmNeptun = float(isikHiziNeptun * hiz)
		print("\nNeptün bize ",isikHiziNeptun, "m/s Işık Hızı uzakta. \nkm olarak da ", kmNeptun, "km uzaktadır.\n")
		
		devam = input("Devam etmek istiyor musunuz? E/H: ")
		if devam in secenekler:
			print("""
	1- Merkür
	2- Venüs
	3- Mars
	4- Jüpiter
	5- Satürn
	6- Uranüs
	7- Neptün
	Dünya'mıza olan uzaklığını öğrenmek istediğiniz gezegeni listedeki numarasıyla belirtin\n""")
			continue
		else:
			print("Çıkılıyor...")
			time.sleep(1)
			break

Uzaklik “uzunluk/saniye” (m/s) olarak degil, uzunluk (m) olarak olculur.

Hizi bilinen (ve sabit) bir seyin kat etmek icin harcayacagi zaman da kullanilabilir; bu noktada hizla (m/s) zamanin (s) carpimi bize uzunlugu (m) verir. (m/s × s = m)

Hesaplardan anladigim kadariyla burada kullanilan birim “isik saniyesi”, yani isigin bir saniyede gittigi mesafe, yani 300,000 km.

@aib Çok geniş bir araştırma yapmadım açıkçası, yanlış rakamlar yazmış olabilirim, aydınlatırsanız sevinirim.

Rakamlarda degil, birimlerde hata var.

“x m/s isik hizi uzaklik” manali bir ifade degil, isik hizi sabit (~300,000 km/s) ve uzaklik olcmez.

“Işık hızı uzaklık” yerine “ışık yılı uzaklık” diye bir ölçü var. Onu kullanmalısınız.
1 saniyede ışık 300000 km mesafe kateder.
1 yılda ışığın katedeceği mesafe = 300000 * 60 * 60 * 24 * 365 = 9460800000000 km’dir ve bu sayı 1 ışık yılı demektir. Yani ışık yılı, zaman değil, mesafe ölçüsüdür.

Işık hızının sabit olup olmadığı konusunda farklı görüşler var.
http://math.ucr.edu/home/baez/physics/Relativity/SpeedOfLight/speed_of_light.html

Teşekkürler @dildeolupbiten , başka bir soru için konu açacaktım da madem buradasınız sorayım;
Yukarıda mesafeleri örneğin 40 milyon, arada noktalar olmadığı için okunması biraz zor. Araya nasıl noktalar koyabilirim? 40000000 değil de 40.000.000

Aşağıdaki kodları bir inceleyin isterseniz.

Aklıma gelen yöntem, 1. yöntem oldu. Başka insanlar farklı yöntemler kullanmışlar, onları da paylaşayım sizinle. Paylaştığım bağlantıda daha farklı yöntemler de bulabilirsiniz. https://stackoverflow.com/questions/5513615/add-decimal-mark-thousands-separators-to-a-number

  1. Yöntem;
def f(string):
    result = list(reversed(string))
    for i in range(1, len(result)):
       if i % 3 == 0:
           result[i] = result[i] + ","
    return "".join(reversed(result))
    
 
x = "40000000"   
print(f(x))

Çıktı:

40,000,000
  1. Yöntem:
print("{0:,}".format(40000000))

Çıktı:

40,000,000
  1. Yöntem:
print(format(40000000, ",d"))

Çıktı:

40,000,000
  1. Yöntem:
import locale
locale.setlocale(locale.LC_ALL, "")
x = "40000000"
print(locale.format("%d", int(x), 1))

Çıktı:

40.000.000
  1. ve 3. yöntem daha pratik gibi, 3.yöntemi anlayamadım biraz açabilir misiniz? Python’da ilk defa “d” görüyorum.

Ben de ilk defa görüyorum bu (3.) yöntemi.

40_000_000

Yeni versiyonlarin birinde geldi ama.

Metrenin tanimi isik hizina gore yapildigi icin sorun degil. ^^

1 Beğeni