【问题标题】:How can I handle numbers and strings in input()?如何处理 input() 中的数字和字符串?
【发布时间】:2020-07-09 02:17:38
【问题描述】:
我是 Python 新手,所以这对这里的许多人来说可能是一个愚蠢的问题。我正在创建一个读取数字的程序,直到用户数字“完成”。当用户数字“完成”时,程序将显示总数、计数和平均值。如果用户不插入数字,则程序必须显示错误消息。
我试着写代码:
while True:
try:
numbers = input('Enter a number: ')
if numbers == 'done':
break
except:
print ('bad data')
目前我还没有考虑总数、计数和平均值。我想了解如何在 input() 中处理“数字”和“字符串”。因为在我的代码中,错误是关于“除了”
【问题讨论】:
-
运行代码时,如果可以的话,遇到什么错误?请edit您的问题添加您观察到的情况。这一次,我相信您发布的代码中可能存在格式问题
-
标签:
python
while-loop
try-catch
except
【解决方案1】:
谢谢你的问题。没有问题是愚蠢的。请检查下面的代码sn-p
【解决方案2】:
如果您的字符串表示数字,则 String.isnumeric() 返回 true。这允许您过滤输入的数字。
numbers = '123'
numbers.isnumeric()
-> returns true
numbers = '123asd'
numbers.isnumeric()
-> returns false
识别号码后,您可以使用
将其转换为一个号码
float(numbers) // is now of type float (if numbers represents in fact a float)
【解决方案3】:
这应该适合你。 input() 函数返回一个字符串,因此为了使用您的输入进行计算,您必须将它们转换为数字数据类型(如 int 或 float)。
如果您输入的内容无法转换为此数据类型,则 except 子句会捕获错误。
sum = 0
count = 0
while True:
numbers = input('Enter a number: ')
if numbers == "done":
break
try:
numbers = float(numbers)
sum += numbers
count += 1
except:
print("bad data, try again.")
# print values after while-loop
print()
print("Total:", sum)
print("You entered", count, "values.")
print("Average:", sum/count)