正在尝试从用户获取多个输入.Int+Str



我是python中编码的新手,正在努力实现这一点。

如果来自用户的输入是"0";姓名年龄;它工作得很好。但我希望它能在用户输入(姓名+年龄(或(姓名+姓氏+年龄(时工作。如果我输入3个值,我会得到ValueError:太多的值无法解压缩(预期为2(

如果将name,lastname,age,=map(str,sys.stdin.readline((.split(((添加到代码中。当用户输入姓名+姓氏+年龄时,我得到了一个值不足的错误

希望有人能帮我:(

name, age, =map(str, sys.stdin.readline().split())
age = int(age)
if "Paul" in (name):
result1 = (age*2)
print("Answer is", + result1)

这里有一种可能性-读取没有映射的输入行,解析它,然后根据结果列表中的元素数量区分输入,

import sys
entry = sys.stdin.readline()
entry = entry.strip().split()
if len(entry) == 2:
# Name + age
name = entry[0]
age = int(entry[1])
print(name, age)
elif len(entry) == 3:
# Name + last name + age 
name = entry[0]
last_name = entry[1]
age = int(entry[2])
print(name, last_name, age)
else:
raise ValueError('Wrong input arguments')
if "Paul" in (name):
result1 = (age*2)
print("Answer is", + result1)

如果输入不符合预期,则此代码将引发异常。相反,您可以不断提示用户,直到他们输入正确的值。如果您决定保留异常方法,请考虑使用信息更丰富的异常消息。

您可以使用join()和列表切片将除最后一个值之外的所有值连接为一(name(:,而不是试图将split()的结果解压缩为两个变量

user = input().split()
age = int(user[-1])
name = ' '.join(user[:-1])
if "Paul" in name:
print(f"Answer is {age*2}")

不管有多少";单词";名称为:

Paul McCartney 42
Answer is 84
Pauline 42
Answer is 84
Paul W. S. Anderson 42
Answer is 84

您不能以这种方式将某个事物拆分为动态数量的变量。

相反,你需要捕获输入,然后计算出传入了多少字段

user = map(str, sys.stdin.readline().split())
lastname = ''
name = user[0]
age = user[1]
if len(user) == 3:
lastname = user[1]
age = user[2]

相关内容

最新更新