我是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:
如果没有输入任何内容,我希望代码再次请求输入,但会出现错误。
非常感谢。
答案 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