空输入行在Python 3.3中引发错误

时间:2019-04-27 11:14:22

标签: python-3.3

我是Python的新手,正在尝试一些在线发现的练习。我正忙的那个首先需要一个文本输入,然后是一个ineteger输入。 我被整数输入卡住了,这会引发错误。
首先,我对代码进行了一些修改,以在遇到错误时进行自我测试。
最终将其更改为与示例/练习完全相同,但都在同一行上导致了相同的错误。
引发的错误是:

Traceback (most recent call last):
  File ************************ line 7, in <module>
    numOfGuests = int(input())
ValueError: invalid literal for int() with base 10: '' 

我检查了一下,发现当输入为空时它会被触发,但是根据我所读的内容,其余代码应能解决该问题。

numOfGuests = int(input())
if numOfGuests:

如果没有输入任何内容,我希望代码再次请求输入,但会出现错误。
非常感谢。

2 个答案:

答案 0 :(得分:0)

更新:
我设法找到了解决方法,即使它不能解决我的问题,我也会接受。
对于任何有兴趣的人,这就是我的工作:
我更改了:

void main() {
  PrimeNumber primeNumber = new PrimeNumber(17);
}

class PrimeNumber {
  int remainder;
  int numberToCheck;

  PrimeNumber(this.numberToCheck){...}
  bool findingPrime(int numberToCheck){...}
}

收件人:

bool PrimeNumber::findingPrime(){...} // it show error in Dart

只有输入内容后,我才能对其进行转换:

numOfGuests=int(input())  

所以最后一个块是:

numOfGuests=input()  

任何改进它的想法或一些见识,将不胜感激。

答案 1 :(得分:0)

我知道这个问题已经有10个月了,但是我只想分享一下您出现错误 ValueError 的原因。

Traceback (most recent call last):
  File ************************ line 7, in <module>
    numOfGuests = int(input())
ValueError: invalid literal for int() with base 10: '' 

是因为input()函数读取任何值并将其转换为字符串类型。即使您尝试输入空白还是空。

示例代码:

any_input = input("Input something: ")
print(f"Your input is: [{any_input}]")

输出:

Input something: 
Your input is: []

然后,将在int()函数内部传递空白或空字符串。 int()函数将尝试将字符串转换为以10为底的整数。众所周知,没有空白或空数字。这就是为什么它给您一个 ValueError 的原因。

为避免这种情况,我们需要在您的代码中使用try-except / EAFP

try:
    # Try to convert input to integer
    numOfGuests = int(input("How many guests will you have? "))
except:
    # Handle Value Error

将其放入While循环中,直到输入有效为止。

示例代码:

while True:
    try:
        # Try to convert input to integer
        numOfGuests = int(input("How many guests will you have? "))
        # If input is valid go to next line
        break # End loop
    except:
        # Handle Value Error
        print("Invalid input!")
print(f"The number of guest/s is: {numOfGuests}")

输出:

How many guest will you have? 3
The number of guest/s is: 3