python 为字符串指定的输入采用整数
python input taking integer while specified for string
我正在练习 python 我正在编写一个小程序,我必须在其中询问他们的姓名,但我试图确保他们没有输入任何数字。因此,当我在 Number 1 中编写代码时,它不使用 int,但它 returns Hello(我尝试过的 int),当我设置 Number 2 之类的代码时,它就可以工作了。所以我在定义提问者函数时做错了,请帮助我理解为什么即使在我有 isalpha()
之后,函数也允许存储整数
。
.
1号
def asker(phrase, name):
while not name.isalpha():
print(phrase)
name = str(input())
#Introducing the Game and asking for first player's name
print('Hello! lets play lastLetterWord game')
print("-------------------------------------------")
print('Please enter your name')
x = str(input())
asker("Please enter your name. Only alphabets.", x)
print("-------------------------------------------")
print("Hello " + x)
print("-------------------------------------------")
Terminal result of trying code of Number 1
..
2号
#Introducing the Game and asking for first player's name
print('Hello! lets play lastLetterWord game')
print("-------------------------------------------")
print('Please enter your name')
x = str(input())
while not x.isalpha():
print("Please enter your name. Only alphabets.")
x = str(input())
print("-------------------------------------------")
print("Hello " + x)
print("-------------------------------------------")
print("What is your friend's name?")
print("-------------------------------------------")
Terminal results of trying Number 2
感谢您的帮助。
您的 asker
需要 return
名称而不是将其作为参数(在函数体内分配给 name
不会影响您传递给的参数它来自函数外部):
def asker(phrase):
name = ""
while not name.isalpha():
print(phrase)
name = input()
return name
然后你可以做:
x = asker("Please enter your name. Only alphabets.")
现在 x
是用户输入的任何名称。
如果你想有两个不同版本的提示(一个是第一次,一个是如果用户第一次弄错了则带有错误消息),你可以在 asker
中这样做:
def asker(phrase, error_msg):
name = input(f"{phrase}\n")
while not name.isalpha():
name = input(f"{phrase} {error_msg}\n")
return name
然后像这样称呼它:
x = asker("Please enter your name.", "Only alphabets.")
请注意,即使用户向 input()
输入数字,结果始终是 str
,而不是 int
。 如果你想让它成为一个 int
你需要明确地做 int(x)
(如果字符串是非数字的,这将引发 ValueError
)。
您没有保存函数的结果。尝试:
def asker(phrase, name):
while not name.isalpha():
print(phrase)
name = str(input())
return name
#Introducing the Game and asking for first player's name
print('Hello! lets play lastLetterWord game')
print("-------------------------------------------")
print('Please enter your name')
x = str(input())
x = asker("Please enter your name. Only alphabets.", x)
print("-------------------------------------------")
print("Hello " + x)
print("-------------------------------------------")
我正在练习 python 我正在编写一个小程序,我必须在其中询问他们的姓名,但我试图确保他们没有输入任何数字。因此,当我在 Number 1 中编写代码时,它不使用 int,但它 returns Hello(我尝试过的 int),当我设置 Number 2 之类的代码时,它就可以工作了。所以我在定义提问者函数时做错了,请帮助我理解为什么即使在我有 isalpha()
之后,函数也允许存储整数。 .
1号
def asker(phrase, name):
while not name.isalpha():
print(phrase)
name = str(input())
#Introducing the Game and asking for first player's name
print('Hello! lets play lastLetterWord game')
print("-------------------------------------------")
print('Please enter your name')
x = str(input())
asker("Please enter your name. Only alphabets.", x)
print("-------------------------------------------")
print("Hello " + x)
print("-------------------------------------------")
Terminal result of trying code of Number 1 ..
2号
#Introducing the Game and asking for first player's name
print('Hello! lets play lastLetterWord game')
print("-------------------------------------------")
print('Please enter your name')
x = str(input())
while not x.isalpha():
print("Please enter your name. Only alphabets.")
x = str(input())
print("-------------------------------------------")
print("Hello " + x)
print("-------------------------------------------")
print("What is your friend's name?")
print("-------------------------------------------")
Terminal results of trying Number 2
感谢您的帮助。
您的 asker
需要 return
名称而不是将其作为参数(在函数体内分配给 name
不会影响您传递给的参数它来自函数外部):
def asker(phrase):
name = ""
while not name.isalpha():
print(phrase)
name = input()
return name
然后你可以做:
x = asker("Please enter your name. Only alphabets.")
现在 x
是用户输入的任何名称。
如果你想有两个不同版本的提示(一个是第一次,一个是如果用户第一次弄错了则带有错误消息),你可以在 asker
中这样做:
def asker(phrase, error_msg):
name = input(f"{phrase}\n")
while not name.isalpha():
name = input(f"{phrase} {error_msg}\n")
return name
然后像这样称呼它:
x = asker("Please enter your name.", "Only alphabets.")
请注意,即使用户向 input()
输入数字,结果始终是 str
,而不是 int
。 如果你想让它成为一个 int
你需要明确地做 int(x)
(如果字符串是非数字的,这将引发 ValueError
)。
您没有保存函数的结果。尝试:
def asker(phrase, name):
while not name.isalpha():
print(phrase)
name = str(input())
return name
#Introducing the Game and asking for first player's name
print('Hello! lets play lastLetterWord game')
print("-------------------------------------------")
print('Please enter your name')
x = str(input())
x = asker("Please enter your name. Only alphabets.", x)
print("-------------------------------------------")
print("Hello " + x)
print("-------------------------------------------")