2017-02-03 13 views
-1

私は非負整数の形でユーザー入力を収集しようとしています。私はこの整数を取って、その整数にある奇数、偶数、およびゼロの1桁の数字の数をユーザーに伝えたいと思います。文字列から1桁の数字を読み取って関数を実行する方法は?

Ex。ユーザー入力 "123"とプログラム出力Evens:1奇数:2零点:0

これまでのコードです。

def main(): 
print("1. Enter a new number") 
print("2. Print the number of odd, even and zero digits in the integer") 
print("3. Print the sum of the digits of the integer") 
print("4. Quit the program") 

value = (input("Please enter a non-negative integer")) 
Sum = 0 
evens = 0 
odds = 0 
zeros = 0 

loop=True 

while loop: 
    main() 
    choice = int(input("Enter a number between 1 and 4:")) 


    if choice==1: 
     loop=False 
     value = int(input("Please enter a non-negative integer")) 
     loop=True 

    elif choice==2: 
     loop=False 
     value_string = str(value) 
     for ch in value_string: 
      print(ch) 
     for [1] in value: 
      if i % 2 == 0: 
       evens = evens + 1 
       print(evens) 

    elif choice==3: 
     loop=False 
     while (value >0): 
      remainder = value % 10 
      Sum = Sum + remainder 
      value = value //10 
     print("Sum of the digits = %d" %Sum) 
+0

[1] in value: 'にはかなりの数の問題があります。 –

+4

インデント –

+0

を再度入力し、ボタン{}}を使用してSOのコードを正しくフォーマットしてください。 – furas

答えて

0

あなたのコードはひどくインデントされており、追いつきにくいです。しかし、あなたはこのようなことをすることができます。ここで

value = input('enter digits ') 
digits = [int(d) for d in value] 
odds = sum(d % 2 for d in digits) 
zeros = sum(d == 0 for d in digits) 
evens = len(digits) - odds 
print('evens: {}, odds: {}, zeros: {}'.format(evens, odds, zeros)) 
+0

あなたより!これは私の問題を解決しました。私はかなり新しくコーディングしていますので、私は恐ろしいインデントをお詫びします。 – NickeyBear

0

、私はいくつかのエッジケースを処理するために、正しい結果を提供するために、リファクタリングと洗練された、あなたと同じコードもインデントを持っています。

def main(): 
    print("1. Enter a new number") 
    print("2. Print the number of odd, even and zero digits in the integer") 
    print("3. Print the sum of the digits of the integer") 
    print("4. Quit the program") 

loop = True 

while loop: 
    main() 
    choice = str(input("Enter a number between 1 and 4: ")) 
    if (choice.isdigit() and 1 <= int(choice) <= 4): 
     choice = int(choice) 
     if choice == 1: 
      value = str(input("Please enter a non-negative integer")) 
      if (value.isdigit() and int(value) >= 0): 
       value = int(value) 
      else: 
       print(
        "You provided an invalid input. Please enter a non-negative number") 
     elif choice == 2: 
      value = str(value) 
      odds = len([d for d in value if (int(d) % 2) == 1]) 
      evens = len([d for d in value if (int(d) % 2) == 0]) 
      zeros = len([d for d in value if d == '0']) 
      print('odd: {} even: {} zeros: {}'.format(odds, evens, zeros)) 
     elif choice == 3: 
      value = str(value) 
      print('Sum of digits = {}'.format(sum(map(int, value)))) 
     elif choice == 4: 
      print("Program is exiting") 
      loop = False 
    else: 
     print("You provided an invalid input. Please enter a number between 1 and 4") 
関連する問題