How do you get Python to detect for no input

后端 未结 5 494
野趣味
野趣味 2020-12-11 07:04

I\'m new to coding in python and I was filling out some code that required a number of inputs. One thing it asked for was for the program to perform an action if the user pr

相关标签:
5条回答
  • 2020-12-11 07:22

    I know this question is old, but I'm still sharing the solution to your problem as it could be a helpful hand to others. To detect no input in Python, you actually need to detect for "End of File" error. Which is caused when there is no input:
    This can be checked by the following piece of code:

    final=[]
    while True:
        try:
             final.append(input())   #Each input given by the user gets appended to the list "final"
        except EOFError:
             break                   #When no input is given by the user, control moves to this section as "EOFError or End Of File Error is detected"
    

    Hope this helps.

    0 讨论(0)
  • 2020-12-11 07:31

    I'm new to python and was looking for a fix to a similar problem. I know this is a really old post but I thought I would have a go at it. If I understand your problem correctly and what you're trying to achieve, this works fine for me. (As long as you don't try and enter a letter!) I posted earlier but it wasn't right, sorry.

    totalcoins = None
    coinN = None
    sum_total = range
    
    while coinN != '0' and totalcoins != '0':
        coinN = input("Please enter first amount:   ")
        if coinN == "":
            print("You didn't enter anything")
        else:
            totalcoins = input("Please enter second amount   ")
            if totalcoins == "":
                print("You didn't enter anything")
            else:
                sum_total = int(coinN) + int(totalcoins)
                if sum_total in range(100):
                        print('Sorry, you only entered {} cents'.format(sum_total))
                else:
                    if sum_total == 100:
                        print('The sum of {0} and {1} is = 1 rand     '.format(coinN, totalcoins, sum_total))
                if sum_total >=100:
                    print('The sum of {0} and {1} is = {2} rand   '.format(coinN, totalcoins, sum_total))
                    print("\n")
    
    0 讨论(0)
  • 2020-12-11 07:31

    Just another tips:

    In python you don't need to do equality test for empty string. Instead please use truth value testing. That is more pythonic.

    if not coinN:
    

    Truth value testing covers the following test:

    • None
    • False
    • zero of any numeric type, for example, 0, 0L, 0.0, 0j.
    • any empty sequence, for example, '', (), [].
    • any empty mapping, for example, {}.
    • instances of user-defined classes, if the class defines a nonzero() or len() method, when that method returns the integer zero or bool value False. 1

    Example:

    >>> s = ''
    >>> if not s:
    ...     print 's is empty'
    ...
    s is empty
    >>>
    
    0 讨论(0)
  • 2020-12-11 07:32

    Actually an empty string would be

    ""
    

    Instead of

    " "
    

    The latter is a space character

    Edit
    A few other notes

    1. Don't use input as your variable name that is a Python keyword

    2. Comparing equality uses == instead of =, the latter is an assignment operator, it attempts to modify the value of the left-hand side.

    0 讨论(0)
  • 2020-12-11 07:34

    EDIT:

    what about something like this:

     try:
         coinN = input("Enter next coin: ")
         if coinN.isdigit(): # checks whether coinN is a number
             if coinN == "" and totalcoin == rand:
                 print("Congratulations. Your calculations were a success.")
             if coinN == "" and totalcoin < rand:
                 print("I'm sorry. You only entered",totalcoin,"cents.")
         else:
             raise ValueError
    
     except ValueError:
         print("Invalid Input")
     else:
         totalcoin = totalcoin + int(coinN) # convert coinN to int for addition
    
    0 讨论(0)
提交回复
热议问题