2017-11-18 68 views
0

回答如何檢查,如果用戶的信息是正確的python

所以,我想提出一個密碼系統。 它要求用戶輸入密碼,然後檢查它是否正確。我遇到以下錯誤:

%Run HelloPython.py 
    File "/home/pi/Python Coding/HelloPython.py", line 17 
    print('Welcome home,', name,) 
     ^
SyntaxError: expected an indented block 

有些錯誤。 代碼:

print('What is your name?') 

# Stores everything typed up until ENTER 
name = sys.stdin.readline() 

print('Hello', name,'Enter password.') 
password = sys.stdin.readline() 
if password == ("1"): 
print('Welcome home,', name,) 
    else: 
     print("Password:", password,"Is incorect. Please try again.") 
+0

您正在比較一個字符串與數字 –

+0

那麼我該怎麼做? – Firework

+0

@aaron我如何關閉這個問題? – Firework

回答

2

SyntaxError: expected an indented block

縮進你if - else之類的語句下面。

  1. 要檢查「等於」,使用==代替=這是一個賦值。
  2. readline返回一個字符串,所以您應該將其與'1'字符串進行比較。
  3. readline最後包含換行\n,所以請撥打strip()就可以了。
import sys 

print('What is your name?') 

# Stores everything typed up until ENTER 
name = sys.stdin.readline()  
print('Hello', name, 'Enter password.') 

password = sys.stdin.readline().strip() 
if password == '1': 
    print("Welcome home,", name) 
else: 
    print("Password:", password, "Is incorrect. Please try again.") 
1

這是不是你唯一的錯誤,但它可能是最容易被忽視:

if password = 1: 

這是怎麼回事:1獲得存儲到變量password(由於=是存儲操作員)。然後if password正在評估;變量是python中的變量,因此無論您在上面的password中存儲了什麼,都將評估爲True

爲了解決這個問題,使用==比較password,也因爲password是一個字符串,使其作爲一個字符串相比把1引號。

if password == "1": 

您還需要修復縮進,python依賴於空格。

2

所以我重寫了你的代碼。你忘記縮進你的if語句。 http://www.secnetix.de/olli/Python/block_indentation.hawk

import sys # Import the 'sys' module 

print('What is your name?') 

name = sys.stdin.readline() 

print('Hello ', name, '. Enter password.') 
password = sys.stdin.readline() 

# Use '==' 
if password == 1: 
    print("Welcome home, ", name) 
    # Here you need indentation. 
else: 
    print("Password: ", password," is incorect. Please try again.") 
相關問題