Python-基于input()数据类型执行不同的任务
编辑: 这篇文章不同于其他文章,因为我不会根据响应的数据类型结束循环。字符串和整数都是有效的。只有当两个条目的数据类型不同时,循环才会回退 我试图通过input()收集两个单词或两个整数如果两个值都是整数我想计算Python-基于input()数据类型执行不同的任务,python,input,types,while-loop,continue,Python,Input,Types,While Loop,Continue,编辑: 这篇文章不同于其他文章,因为我不会根据响应的数据类型结束循环。字符串和整数都是有效的。只有当两个条目的数据类型不同时,循环才会回退 我试图通过input()收集两个单词或两个整数如果两个值都是整数我想计算应答1**应答2。如果两个值都是非整数,我想连接字符串。最后,如果数据类型不匹配,我希望将用户发送到开头以输入两个新值 这是我的尝试。我为你将要看到的事提前道歉 ## collect first value print("Please type a word or an int
应答1**应答2。
如果两个值都是非整数,我想连接字符串。最后,如果数据类型不匹配,我希望将用户发送到开头以输入两个新值
这是我的尝试。我为你将要看到的事提前道歉
## collect first value
print("Please type a word or an integer:")
answer1 = input()
## check for blanks
if answer1 == "":
print("Blank space detected. Please retry.")
answer1 = input()
## collect second value
print("Please type another word or integer:")
answer2 = input()
## check for blanks
if answer2 == "":
print("Blank space detected. Please retry.")
answer2 = input()
## define test for integer status
def containsInt(intTest):
try:
int(intTest)
return True
except ValueError:
pass
## check for matching data types and produce final value
if containsInt(answer1) == True:
containsInt(answer2)
if containsInt(answer2) == True:
finalInt = (int(answer1))**(int(answer2))
print("\n")
print(finalInt)
else:
print("Sorry, the data types must match - both words or integers.")
continue
else:
containsInt(answer2)
if containsInt(answer2) !=True:
print("\n")
print(answer1 + answer2)
else:
print("Sorry, the data types must match - both words or integers.")
continue
我试图用“continue”让它回到开头,但它对我很生气。你可能知道我是个十足的新手,这是我的第一篇帖子。请不要对我太苛刻(
continue
仅适用于循环,即适用于
和while
。您试图在循环之外使用continue
,这就是Python不喜欢它的原因
您可以做的一件事是检查数据类型是否匹配,然后基于此执行操作:
如果类型(应答1)=类型(应答2):
如果存在(回答1,str):
#做弦乐
elif isinstance(answer1,int)或isinstance(answer1,float):
#计算
其他:
#类型匹配,但不是字符串或数字
其他:
#类型不匹配,因此会做出相应的反应
默认情况下,Python将输入视为string
s,因此即使为输入指定一个数字,它也将是string
类型。您可以通过多种方式解决此问题,其中之一是您尝试将输入转换为一个数字。float
在这种情况下比int
工作得更好,因为否则您将无法使用t不能很好地处理小数。例如:
answer1=input()
尝试:
回答1=浮动(回答)
除:
通过
这样做的目的是尝试将默认输入的字符串转换为浮点数,如果不起作用,则它将保持为字符串。这应该可以:
为True时:
answer1=输入(“请键入一个单词或整数:”)
#检查有无空白
而答案1==“”:
answer1=输入(“检测到空白。请重试”)
尝试:
answer1=int(answer1)
除值错误外:
通过
answer2=输入(“请键入另一个单词或整数:”)
#检查有无空白
而答案2==“”:
answer2=输入(“检测到空白。请重试”)
尝试:
answer2=int(answer2)
除值错误外:
通过
如果类型(应答1)=类型(应答2):
如果类型(回答1)=str:
打印(回答1+回答2)
打破
elif类型(回答1)=int:
打印(回答1**回答2)
打破
其他:
打印(f“对不起,{answer1}和{answer2}的数据类型不匹配。”)
持续
请注意,如果输入像1.5
这样的数字,它将被视为字符串。
因此,输入
1.5
和a
将产生1.5a
这是否回答了您的问题?感谢您的贡献!不幸的是,这告诉我一切都匹配。我使用了print(type(answer1))
和print(type(answer2))
要确定这一点,即使我在input()中键入一个整数,它也会将其视为一个字符串。我编辑了我的答案,以帮助您解决这个类型问题。这非常有效!!非常感谢。