Tôi đang cố gắng chỉ cho phép một số đầu vào trong Python bằng cách sử dụng mã sau
while True:
age=input['Are you 1,2 OR 3']
if age== ['1' or '2' or '3']:
break
else:
print['df']
Khi tôi nhập 1, không có lỗi nào xuất hiện và nó tiếp tục phần còn lại của chương trình, tuy nhiên khi tôi nhập 2 hoặc 3, nó sẽ xuất hiện với lỗi khác: lỗi. Tôi đã thử thay đổi nó một chút và có vẻ như nó chỉ chấp nhận số đầu tiên từ các lựa chọn [1]. Có lẽ là một sửa chữa rất đơn giản. Cảm ơn vì bất kì sự giúp đỡ.
Đã hỏi ngày 22 tháng 3 năm 2015 lúc 23:06Mar 22, 2015 at 23:06
1
Bạn cần thay đổi
if age in ['1', '2', '3']:
0 Kiểm tra với:if age in ['1', '2', '3']:
if age in ['1', '2', '3']:
1 là một biểu thức boolean trả về chuỗi không trống đầu tiên. Và trong trường hợp này, chuỗi là if age in ['1', '2', '3']:
2.Ví dụ:
>>> '1' or '2' or '3'
'1'
>>> '' or '2' or '3'
'2'
Đã trả lời ngày 22 tháng 3 năm 2015 lúc 23:08Mar 22, 2015 at 23:08
JuniorCompressorJuniorCompressorJuniorCompressor
Huy hiệu vàng 19.3k44 gold badges28 silver badges57 bronze badges
2
Bạn không thể tham gia so sánh như thế. Bạn có thể:
if age == '1' or age == '2' or age == '3':
hoặc sử dụng toán tử
if age in ['1', '2', '3']:
3 như JuniorCompressor đề xuất.Đã trả lời ngày 22 tháng 3 năm 2015 lúc 23:08Mar 22, 2015 at 23:08
JuniorCompressorJuniorCompressorSelcuk
Huy hiệu vàng 19.3k412 gold badges95 silver badges100 bronze badges
Chỉ chấp nhận số làm đầu vào người dùng trong Python #
Chỉ chấp nhận số làm đầu vào người dùng:
- Sử dụng vòng lặp
4 để lặp cho đến khi người dùng nhập một số.if age in ['1', '2', '3']:
- Sử dụng lớp
5 để cố gắng chuyển đổi giá trị thành số dấu phẩy động.if age in ['1', '2', '3']:
- Nếu người dùng nhập một số, hãy sử dụng câu lệnh
6 để thoát khỏi vòng lặp.if age in ['1', '2', '3']:
Copied!
while True: try: # 👇️ use int[] instead of float # if you only accept integers num = float[input['Your favorite number: ']] print[num] break except ValueError: print['Please enter a number.']
Chúng tôi đã sử dụng vòng lặp
if age in ['1', '2', '3']:
4 để lặp lại cho đến khi người dùng nhập giá trị số nguyên.Hàm đầu vào có một đối số
if age in ['1', '2', '3']:
8 tùy chọn và ghi nó vào đầu ra tiêu chuẩn mà không cần một dòng mới.Hàm sau đó đọc dòng từ đầu vào, chuyển đổi nó thành một chuỗi và trả về kết quả.
Hàm
9 luôn trả về một chuỗi, ngay cả khi người dùng nhập một số.if age in ['1', '2', '3']:
Chúng tôi đã sử dụng lớp
if age in ['1', '2', '3']:
5 để cố gắng chuyển đổi giá trị mà người dùng đã nhập thành số dấu phẩy động.Copied!
while True: try: # 👇️ use int[] instead of float # if you only accept integers num = float[input['Your favorite number: ']] print[num] break except ValueError: print['Please enter a number.']
Nếu nỗ lực chuyển đổi giá trị không thành công, một
>>> '1' or '2' or '3'
'1'
>>> '' or '2' or '3'
'2'
1 sẽ được nâng lên và khối >>> '1' or '2' or '3'
'1'
>>> '' or '2' or '3'
'2'
2 chạy.Khối
>>> '1' or '2' or '3'
'1'
>>> '' or '2' or '3'
'2'
2 in thông báo "Vui lòng nhập một số" và các vòng lặp lại.Nếu người dùng nhập một số, chúng tôi in số và
6 ra khỏi vòng lặp if age in ['1', '2', '3']:
5.>>> '1' or '2' or '3'
'1'
>>> '' or '2' or '3'
'2'
Tuyên bố phá vỡ thoát ra khỏi vòng lặp
>>> '1' or '2' or '3'
'1'
>>> '' or '2' or '3'
'2'
6 hoặc >>> '1' or '2' or '3'
'1'
>>> '' or '2' or '3'
'2'
5.Nếu bạn chỉ chấp nhận các giá trị số nguyên, hãy sử dụng lớp
>>> '1' or '2' or '3'
'1'
>>> '' or '2' or '3'
'2'
8 thay thế.Copied!
while True: try: # 👇️ use int[] instead of float # if you only accept integers num = int[input['Your favorite number: ']] print[num] break except ValueError: print['Please enter a number.']
Lưu ý rằng nếu bạn sử dụng lớp
>>> '1' or '2' or '3'
'1'
>>> '' or '2' or '3'
'2'
8 để cố gắng chuyển đổi một chuỗi lưu trữ số điểm nổi thành số nguyên, một >>> '1' or '2' or '3'
'1'
>>> '' or '2' or '3'
'2'
1 sẽ được nâng lên.Copied!
# ⛔️ ValueError: invalid literal for int[] with base 10: '5.5' print[int['5.5']] # ✅ works print[int[5.5]] # 👉️ 5.5
Lớp
if age in ['1', '2', '3']:
5 dễ tha thứ hơn nhiều.Copied!
print[float['5.5']] # 👉️ 5.5 print[float['5']] # 👉️ 5.0
Nếu bạn cần đảm bảo người dùng nhập một số trong một phạm vi nhất định, hãy sử dụng câu lệnh
if age == '1' or age == '2' or age == '3':
2.Copied!
while True: try: num = float[input['Enter a number between 1 and 5: ']] print[num] if num 5: raise ValueError break except ValueError: print['Please enter a number between 1 and 5.']
Đoạn mã chỉ cho phép người dùng nhập một số từ
if age == '1' or age == '2' or age == '3':
3 và if age == '1' or age == '2' or age == '3':
4.Nếu giá trị không phải là một số, nhỏ hơn
if age == '1' or age == '2' or age == '3':
3 hoặc lớn hơn if age == '1' or age == '2' or age == '3':
4, A >>> '1' or '2' or '3'
'1'
>>> '' or '2' or '3'
'2'
1 được tăng lên và các vòng lặp lại chạy lại.Khi người dùng nhập một số trong phạm vi được chỉ định, không có
>>> '1' or '2' or '3'
'1'
>>> '' or '2' or '3'
'2'
1 nào được nâng lên và chúng tôi thoát ra khỏi vòng lặp >>> '1' or '2' or '3'
'1'
>>> '' or '2' or '3'
'2'
5.