gpt4 book ai didi

python - 如何查找输入数据的数据类型

转载 作者:行者123 更新时间:2023-11-30 22:00:48 25 4
gpt4 key购买 nike

我是Python新手,我的程序是一个简单的加法程序,它可以添加用户输入的任何数字(int或float),并且循环在输入q时停止。现在我的问题是,每次我输入一些数字然后输入 q 停止时,我都会不断收到“ValueError”。

我使用了eval()函数来确定输入数据的数据类型。我已经在无限 while 循环中添加了内容,该循环在输入 q 时中断。

这是我的代码:

sum,sum_i,c=0,0,0
sum_f=0.0

print("Enter q/Q to stop entering numbers.")
while True:
a=input("Enter number: ")
try:
t= eval(a)
print(type(t))
except (NameError, ValueError):
pass

if(type(t)==int):
sum_i=sum_i+int(a)
c=c+1

elif(type(t)==float):
sum_f=sum_f+float(a)
c=c+1

elif (type(t)==str):
if (a=='q'or a=='Q'):
break

else:
print("Invalid data entered. Please enter a number to add or q/Q to quit. ")

sum= sum_i+ sum_f
print("You have entered ",c," numbers and their sum is: ",sum)

我的输出应该提供输入 q 时输入的数字的总和,但这就是我得到的:

Enter q/Q to stop entering numbers.
Enter number: 3
<class 'int'>
Enter number: 5.5
<class 'float'>
Enter number: 12
<class 'int'>
Enter number: q
Traceback (most recent call last):
File "/home/netvarth/py test/sum.py", line 14, in <module>
sum_i=sum_i+int(a)
ValueError: invalid literal for int() with base 10: 'q'

最佳答案

这是使用嵌套 try/except 进行的重构,它以更简洁和 Python 的方式解决了问题。

#!/usr/bin/env python3

nums = list()
while True:
# Usability tweak: Trim surrounding whitespace
a = input("Enter number: ").strip()
try:
t = int(a)
except ValueError:
try:
t = float(a)
except ValueError:
if a in ('q', 'Q'):
break
print("Invalid data entered. Please enter a number or q/Q to quit.")
continue
nums.append(t)
print("You have entered {0} numbers and their sum is {1}".format(
len(nums), sum(nums)))

关于python - 如何查找输入数据的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54231077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com