2016-04-12 22 views
0

Bir süredir bu sorunla karşı karşıya kaldım ve yine de anlayamıyorum. Değişkenleri eşit hesaplayan bir program yaptım. Bir kısmında kullanıcının tüm değişkenlerin değerini tek tek girmesi ve 'n' harfi ile hesaplanması gereken işareti değiştirmesi istenir. Kullanıcı hata yaptığında, değişken değerini yeniden girmek için bir seçenek var. Örneğin, kullanıcının girişi BACKSPACE olduğunda, bir önceki değişkene geri atlamalı ve kullanıcının değeri yeniden girmesine izin vermelidir. Umarım yeterince iyi tanımlamışımdır. Bu işi nasıl yapacaklarını biliyor musunuz? Yanıtladığın için teşekkürler.Gerektiğinde yeniden girilebilen girişler nasıl yapılır

Kodun nasıl göründüğü budur. 'premenne', eşit değişkenlerin değerlerini içeren bir sözlüktür. Döngü için sözlüğü geçer ve bu değişkenlerin her birine girdi değeri atar.

premenne = { 
    'm1': 0.0, 
    'c1': 0.0, 
    't1': 0.0, 
    't': 0.0, 
    'm2': 0.0, 
    'c2': 0.0, 
    't2': 0.0 

} 

for x in premenne: 
    premenne[x] = input(x + ': ') 
+0

değil ne istediğinizi tam olarak net: değil, en az

for x in premenne: while True: try: premenne[x] = float(input('{}: '.format(x))) break except: continue 

Son olarak 0.0 kullanıma bu eşit tüm değerler ile dicti başlatmak için. Bize şu ana kadar yaptığınız şeyle ilgili bazı kodlar gösterdiyseniz ve bazı örnek girdilerle birlikte problemler neler olduğu daha iyi olurdu. –

+0

Bazı örnek giriş ve beklenen çıktı gösterebilir misiniz? –

+0

İşte bu ... umarım –

cevap

0

Bunun gibi bir şeyden mi bahsediyorsunuz?

for x in premenne: 
    while True: 
     try: 
      val = input('{}: '.format(x)) 
      val = float(val) 
     except: 
      # catch-all, conversion to float failed, ask again 
      continue 
     else: 
      premenne[x] = val 
      break 

Daha iyi anlayabilmeniz için, gerçekten gerekli olandan daha fazla kod satırıyla yaptım. Fikir o kadar uzun Şimdi

kısa versiyonu (tüm değerler yüzer olduğu gibi göründüğü kadar) değerinin bir şamandıra dönüştürülebilir edilemez x için bir değer girmesini sormaya devam edecektir aynı kodu:

premenne = dict.fromkeys(['m1', 'c1', 't1', 't', 'm2', 'c2', 't2'], 0.0) 
+0

İhtiyacım olan bu değil ama yine de zaman ayırdığınız için teşekkür ederim! –

İlgili konular