Py学习  »  Python

除了使用Python的集合之外,还使用If-Else语句

Nath • 3 年前 • 1285 次点击  

我必须为学校创造一个算命师。我希望用户输入一个介于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')
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/133150
 
1285 次点击  
文章 [ 4 ]  |  最新文章 3 年前
Acccumulation
Reply   •   1 楼
Acccumulation    3 年前

首先 input 将用户输入作为字符串。所以即使他们进入 1 ,这与你的套装不匹配,因为你的套装是 int ,他们的输入是 一串 '1' ,而不是整数 1. .而且,不需要使用一套。A. 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!")
Ishan Shishodiya
Reply   •   2 楼
Ishan Shishodiya    3 年前

你可以使用这个代码,

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!")

根据你的需要修改代码,但这是一个完美的基础。

Anvar_Ermatov
Reply   •   3 楼
Anvar_Ermatov    3 年前
  1. 如果user_num==fortune_num://而不是这个;您可以在fortune_num:中的int(user_num)中使用关键字,

  2. 此外,打印语句必须缩进,否则可能会出现缩进错误。

Avinash Mo7x
Reply   •   4 楼
Avinash Mo7x    3 年前

使用关键字 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')