python想问一个问题 怎么控制输入

P1957 口算练习题

wykun1234 @ 2021-09-02 10:31:25

n = int(input())
for i in range(n):
    x,y,z=input().split()
n = int(input())
lst=[]
for i in range(n):
    s=input()
    lst.append(s)
print(lst)

第一种在输入两个时报错。第二种转化成了字符串。想知道怎么才能一行输入三个,下一行输入两个,并且保持数据原来的类型


by Zjl37 @ 2021-09-02 11:10:56

保持数据原来的类型

不会的。第一种若合法输入,x y z 也会是字符串。你要手动用 int 函数转换成整数

怎么才能一行输入三个,下一行输入两个

可以先读一行,split 成列表,然后用 len 检查列表的大小

l = input().split()
if len(l) == 2:  
    pass # do sth
else:            
    pass # do sth

by 45dino @ 2021-09-02 11:18:34

@wykun1234 我写了一个比较丑的代码

_=int(input())
a=""
for i in range(_):
    b=input().split()
    c=0
    d=0
    if b[0]=='a' or b[0]=='b' or b[0]=='c':
        a=b[0]
        c=int(b[1])
        d=int(b[2])
    else:
        c=int(b[0])
        d=int(b[1])
    if a=='a':
        s=str(c)+"+"+str(d)+"="+str(c+d)
        print(s)
        print(len(s))
    if a=='b':
        s=str(c)+"-"+str(d)+"="+str(c-d)
        print(s)
        print(len(s))
    if a=='c':
        s=str(c)+"*"+str(d)+"="+str(c*d)
        print(s)
        print(len(s))

这个题目感觉不是很适合用python


by wykun1234 @ 2021-09-02 15:20:19

@45dino 好的明白啦,十分感谢!


by wykun1234 @ 2021-09-02 15:23:24

@Zjl37 输入这里困惑我好久。现在明白了,十分感谢!


by zzzxns1 @ 2023-03-05 23:11:14

@45dino

蒻蒻疑问
如果只有两个数就沿用上一运算类型这个要求在哪实现的?
没看出来0.0  dalao能不能解答一下,十分感谢!

by 45dino @ 2023-03-05 23:19:29

@zzzxns1 就是如果是读入的这一行(b)的第一个是 a,b,c 的话,说明是三个,否则就说明是两个


by zzzxns1 @ 2023-03-05 23:28:08

@45dino


好像知道啦,是 a = b[0] 这个
如果3个就正常,2个就 a 没变化就等于沿用上一种运算吧

by 45dino @ 2023-03-05 23:40:14

差不多吧(?)


|