用于在Python中打印Int值的更干净的代码

用于在Python中打印Int值的更干净的代码,python,printing,int,Python,Printing,Int,我有一段代码要求用户年龄。用户的输入类型为int。此外,如果用户不想输入任何内容,可以按“回车”退出程序(如下所示): 但是,当我只按Enter键时,会出现以下错误: Traceback (most recent call last): File "C:/Users/test/PycharmProjects/exceptions/testinput.py", line 2, in <module> answer = int(input()) ValueError: inv

我有一段代码要求用户年龄。用户的输入类型为
int
。此外,如果用户不想输入任何内容,可以按“回车”退出程序(如下所示):

但是,当我只按Enter键时,会出现以下错误:

Traceback (most recent call last):
  File "C:/Users/test/PycharmProjects/exceptions/testinput.py", line 2, in <module>
    answer = int(input())
ValueError: invalid literal for int() with base 10: ''

Process finished with exit code 1

我的问题是,除了一个
try
块之外,是否有其他方法可以打印
int
类型的空白值?

当然:在转换为int之前检查输入:

answer = input("What is your age? ")
if answer == '':
    print("Don't want to disclose? That's fine.")
else:
    ...

当然:在转换为int之前检查输入:

answer = input("What is your age? ")
if answer == '':
    print("Don't want to disclose? That's fine.")
else:
    ...

我将从
int
函数中删除
input
调用

print(“您的年龄是多少?”)
答案=输入()
回答=int(回答),如果回答其他无
如果不回答:打印(“不想透露?没关系。”)

我将从
int
函数中删除
输入
调用

print(“您的年龄是多少?”)
答案=输入()
回答=int(回答),如果回答其他无
如果不回答:打印(“不想透露?没关系。”)
另一种方法是三思而后行,使用
if-else
,并在
else
内部进行
int
转换:

answer = input("What is your age?")

if answer == "":
    print("Don't want to disclose? That's fine.")
else:
    answer = int(answer)
<>但是现在你需要考虑如果<代码>回答<代码>是有效的整数构成字符串,例如,如果用户输入<代码> FoBoA怎么办?(提示:现在您还需要使用
str.isdecimal
或类似的方法进行检查)。

另一种方法是三思而后行,使用
if-else
并在
else
内部进行
int
转换:

answer = input("What is your age?")

if answer == "":
    print("Don't want to disclose? That's fine.")
else:
    answer = int(answer)

<>但是现在你需要考虑如果<代码>回答<代码>是有效的整数构成字符串,例如,如果用户输入<代码> FoBoA怎么办?(提示:现在您还需要使用
str.isdecimal
或类似方法进行检查)。

输入函数将输入转换为
字符串
,如中所述

输入([prompt])如果存在prompt参数,则会将其写入 不带尾随换行符的标准输出。然后,该函数读取 从输入中删除行,将其转换为字符串(删除尾随字符) newline),并返回该值。读取EOF时,EOFError升高

因此,当您不输入任何内容时,您试图将字符串(
'
)转换为int-type,类似于
int('xyz')
,因此会得到一个值错误异常

ValueError:基数为10的int()的文本无效:“xyz”

如果包含在
字符串中的数字
类型,例如
int('2')
,则其类型转换良好

您或许可以这样做:

print("What is your age?")
answer = input()
if answer == '':
    print("Don't want to disclose? That's fine.")
else:
    int(answer)

输入函数将输入转换为
字符串
,如中所述

输入([prompt])如果存在prompt参数,则会将其写入 不带尾随换行符的标准输出。然后,该函数读取 从输入中删除行,将其转换为字符串(删除尾随字符) newline),并返回该值。读取EOF时,EOFError升高

因此,当您不输入任何内容时,您试图将字符串(
'
)转换为int-type,类似于
int('xyz')
,因此会得到一个值错误异常

ValueError:基数为10的int()的文本无效:“xyz”

如果包含在
字符串中的数字
类型,例如
int('2')
,则其类型转换良好

您或许可以这样做:

print("What is your age?")
answer = input()
if answer == '':
    print("Don't want to disclose? That's fine.")
else:
    int(answer)

这个逻辑是多余的,因为你已经检查了两次
answer
。你是对的@Prune。事先打印语句的逻辑也很糟糕。逻辑是多余的,因为你已经检查了两次
answer
。你是对的@Prune。事先打印语句的逻辑也很糟糕。