Pyhton编程(二)之变量、用户输入及条件语句

时间:2023-12-20 18:27:32

1、 变量

  Python中的变量概念很好理解,变量其实就是某个数值的“名字”。

  变量定义的规则:

  (1)   只能由数字、字母、下划线组成(不能以数字开头

  (2)   不能使用关键字作为变量名

  ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise',   'return', 'try', 'while', 'with', 'yield']  ,这些关键字作为了解,不需要死记,当使用Python解释器编写代码的过程中,如果误用关键字作为变量名,解释器会自动标红该变量名以做提示。

  (3)   最好不要使用Pyhton的内置函数作为变量名

  在Python中,有很多内置函数,它们的用法和功能已经写好,用的时候直接调用就可以了,如果将变量与内置函数定义成同一个名字,难免会出现一些意想不到的错误。看下面这个例子:

 print(sum([1,2,3]))     //调用内置函数sum,求和
运行结果:
6  

 如果将sum作为变量名并赋予了一个其它的值,在用sum内置函数进行求和操作的话:

 sum = 123              //将sum作为变量名,并给它赋值为123
print(sum([11,22])) //调用内置函数sum,求和
运行结果:
程序报错:TypeError: 'int' object is not callable

  再次执行此程序会发现程序报错了:“TypeError: 'int' object is not callable”,这是因为将sum作为变量名并赋值了之后,下面的程序在调用sum的时候会先找到该变量而不是先去找Python的内置函数sum(),所以最好不要用内置函数作为变量名使用。

  在上面这个代码中,类似于sum = 123 形式的 变量名 = 值这样的操作称为赋值,也可以理解为:将某个值绑定到了某个变量上,变量在被赋值后,就可以在表达式中使用该变量,变量可以理解为一个昵称,来代指在内存中某个地址中的内容

2、 用户输入

  程序是为了满足人们的需求来供人使用的,当一个用户在调用程序的时候,赋值给某个变量的值是不确定的,为了将无法预测的值赋值给指定的变量以便后面的程序可以调用该变量,就要用到input()函数。

  input():永远等待,直到用户输入了一个值,该程序才会继续执行,并将输入的值赋值给某一个变量。

  以大家最熟悉的用户登陆过程为例:提示用户输入用户名和密码,如果输入正确输出“Welcome”,输入错误输出“Failed”,代码如下:

  如上述的代码实例,通过input()函数获取到了用户的实时输入。

  但还存在一个小问题:通过上面的代码,用户在输入密码的时候是明文的,如果想设置密码为密文,就需要getpass模块。模块的概念稍后会讲到。  

 username = "root"         //定义正确的用户名和密码
password = "root"
"""调用input()函数提示用户输入,输入的值赋值给Personname和Personpasswd,如果没有输入,程序将停滞,不会继续向下执行"""
Personname = input("Please enter your username:")
Personpasswd = input("Please enter your password:")
"""判断用户输入的用户名和密码是否与正确的用户名和密码相同"""
if Personname == username and Personpasswd == password:
print("Welcome")
else:
print("Failed")

3、 模块导入

  Python通过导入模块来扩展自己的功能。导入模块通过import关键字,主要有以下4种方式:

 import os                   //导入os模块
from os import mkdir //导入os模块中的mkdir函数
from os import mkdir,rmdir //导入os模块中的mkdir,rmdir函数,用逗号分隔
from os import * //导入os模块中的一切

  还有一种重命名的方法,如果需要导入的两个模块中都有mkdir方法,可以使用import+模块名+as+自定义模块名的方式来进行区分。

 from moudle1 import mkdir as test1   //将moudle1模块中的mkdir函数重命名为test1
from moudle2 import mkdir as test2 //将moudle2模块中的mkdir函数重命名为test2

  通过test1.xxx和test2.xxx的方式调用。

4、 条件语句

  • if 语句

  if 条件语句用来进行判断,如下所示为if条件语句的基本结构:

 if条件:
内部代码块

  通过 if+表达式的方式来对所写的表达式进行真假判断,如果判定为真,执行后面的代码块。如果为假,该代码块不会被执行。

  • if..else语句

  当进行if条件判断时,如果判定为真和判定为假都有不同的输出,就需要使用if..else语句。

 if 条件:
内部代码块1
else:
内部代码块2

  如上的代码结构所示,通过if ..else语句如果判定的条件为真,就执行内部代码块1,否则会执行内部代码块2  

  • if..elif..else语句

  如果对于多种条件的判定,都会有不同的返回结果,使用if..eles语句很显然是不行的,它仅仅能返回真或假两种结果,所以为了适用于多种判定,就需要使用if..elif..else语句,如下所示:

 if 条件:
内部代码块1
elif 条件:
内部代码块2
……
else:
内部代码块3

  可以在中间插入无数多个elif条件来对多种判定条件进行判断,并得到相应的返回结果

  • if条件语句的嵌套
 if条件1:
    if条件2:
      内部代码块1
    else:
      内部代码块2
  else:
    内部代码块3

  在写if嵌套语句的时候一定要注意代码的缩进问题,所以初步学习的时候不建议加多个嵌套,否则很容易出现逻辑混乱甚至导致程序运行出错。

  下面通过一个简单的小例子来演示下if语句的用法

  应用场景:

  (1)   输入用户名,判断该用户名是否正确,如果正确,则进入该用户,否则输出“Username does not exist”

  (2)   如果用户名正确,提示用户输入密码,如果密码输入正确,输出“welcome”,否则输出“password input error”

 username = "czp"
password = ""
login_user = input("Please enter your username:")
if login_user == username:
login_passwd = input("Please enter your password:")
if login_passwd == password:
print("welcome")
else:
print("password input error")
else:
print("Username does not exist")

5、 循环语句

  上面写到的用户登陆例子中,程序执行一次就会终止了,在很多时候,我们登陆的时候,难免会输错密码或忘记密码,输错一次就不允许再次输入,就很不符合实际的应用场景,如果想让其重复执行,就需要用到while循环语句。

  • 基本while循环
 while 条件:
# 循环体
# 如果条件为真,那么循环体则执行
# 如果条件为假,那么循环体不执行

  当有一个需求是打印0-10的时候,可以用这样的方式:

 print(0)
print(1)
………
print(10)

  如果用循环的话,就更方便了

 i=0
while i < 11:
print(i)
i+=1
  • break
 while True:
print ""
break //当输入break时,就退出所有循环
print ""
  • continue
 while True:
print ""
continue //当输入continue,退出当前循环,继续下一次的循环
print ""

  continue和break的区别就是:虽然都是退出当前循环,continue是继续执行程序,也就是说程序依旧在运行,而break就是直接跳出程序,程序终止。

6、 if/while 语句练习

  1)使用while循环输出 1 2 3 4 5 6 8 9 10(注意:没有7)

 n = 0
while n < 11:
if n ==7:
pass
else:
print(n)
n+=1

  2) 求1-100的所有数的和

 n = 1
s = 0
while n < 101:
s += n
n +=1
print(s)

  3)输出 1-100 内的所有奇数

 n = 1
while n < 101:
if n%2 != 0:
print(n)
n+=1

  4)求1-2+3-4+5 ... 99的所有数的和

 n = 1
s = 0
while n < 101:
if n%2 != 0:
s = s + n
else:
s = s - n
n+=1
print(s)

  5) 用户登陆,登陆成功提示Welcome,登陆失败提示Failed,只有三次机会,三次输入错误,自动退出程序

 user="czp"
n=0
while n<3:
user1=input("请输入您的用户名:")
if user1==user:
print("Welcome")
break
else:
print("Failed")
n+=1