除了使用Python的set之外,还使用If Else语句



我要为学校创造一个算命师。我希望用户输入1-9之间的数字。但我也想给一个错误信息,如果他们输入一个不同的数字。我正在使用一个包含我的数字的集合,但是我不能在if语句中调用它。

fortune_num = set([1, 2, 3, 4, 5, 6, 7, 8, 9])
user_num = input(f'Pick a number and find your fortune! Choose a number from 1 to 9 and hit enter: ')
print()
if user_num == fortune_num:
print(user_num)
else:
print('Error')

使用关键字in来检查集合的隶属度,并将input强制转换为int:

fortune_num = set([1, 2, 3, 4, 5, 6, 7, 8, 9])
user_num = input(f'Pick a number and find your fortune! 
nChoose a number from 1 to 9 and hit enter: ')
print()
if int(user_num) in fortune_num: #this would throw an error if input is not int
print(user_num)
else:
print('Error')

您可以使用以下代码,

fortune_num = list(range(1,10))
user_num = input(f'Pick a number and find your fortune!nChoose a number from 1 to 9 and hit enter: ')
if int(user_num) in fortune_num:
print(user_num)
else:
raise ValueError("You entered a wrong input!")

如果输入错误,这将引发实际的Python错误。

如果你想再给用户一次机会输入正确的输入,使用这个,

fortune_num = list(range(1,10))
while True:
try:
user_num = int(input(f'Pick a number and find your fortune!nChoose a number from 1 to 9 and hit enter: '))
if user_num in fortune_num:
print(user_num)
break
else:
raise ValueError
except:
print("nYou entered a wrong input. Please enter a valid number!")

根据您的需要更改代码,但这将作为完美的基础。

首先,input将用户输入作为字符串。因此,即使他们输入1,也不会匹配您的集合,因为您的集合是int,而他们输入的是字符串'1',而不是整数1。而且,没有必要使用一组。range对象更容易生成,因为它包含多个数字,所以变量名应该是复数。你的缩进也不正确。我看不出输入函数中的f在做什么,如果你想要一个多行字符串,你需要三引号。此外,如果您在字符串中有一个回车,将n放在字符串中会给您两次换行;我不确定这是有意的。一种方法是:

fortune_nums = [str(num) for num in range(1,10)]
user_num = input('''Pick a number and find your fortune!
Choose a number from 1 to 9 and hit enter: n''')
print()
if user_num in fortune_nums:
print(user_num)
else:
print('Error')

如果您想变得更花哨,可以将fortune_nums保持为int,然后在将输入转换为int时进行尝试,捕获无效文字错误:

fortune_nums = range(1,10)
user_num = input('''Pick a number and find your fortune!
Choose a number from 1 to 9 and hit enter: n''')
print()
try:
if(int(user_num) in fortune_nums):
print(user_num)
except ValueError:
print("That's not a valid integer!")
  1. 如果user_num == fortune_num://而不是这个;您可以在fortune_num:,

    中使用int(user_num)关键字
  2. 你的print语句必须缩进,否则你可能会得到缩进错误。

最新更新