Python-基于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

编辑: 这篇文章不同于其他文章,因为我不会根据响应的数据类型结束循环。字符串和整数都是有效的。只有当两个条目的数据类型不同时,循环才会回退

我试图通过input()收集两个单词或两个整数如果两个值都是整数我想计算
应答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()中键入一个整数,它也会将其视为一个字符串。我编辑了我的答案,以帮助您解决这个类型问题。这非常有效!!非常感谢。