>>name 'xiaobai'编写小程序,询问用户姓名,性别,年龄,工作,工资,以格式化的方式输出" />

Python学习——实现简单的交互raw

发布时间:2019-08-27 08:03:41编辑:auto阅读(1763)

    row_input的使用:

    >>> name=raw_input("please input your name:")
    please input your name:xiaobai
    >>> name
    'xiaobai'

    编写小程序,询问用户姓名,性别,年龄,工作,工资,以格式化的方式输出:

    Information of company stuff:

    Name:

    Age:

    Sex:

    Job:


    代码:

    [root@nfs-server ~]# vim information_of_stuff.py   
    #!/bin/python
    name=raw_input("Please input your name:")
    age=raw_input("Please input your age:")
    sex=raw_input("Please input your sex:")
    job=raw_input("Please input your job:")
    print '''
    ==============================
    Information of company stuff:
    Name: %s
    Age: %s
    Sex: %s
    Job: %s
    =============================='''%(name,age,sex,job)

    执行:

    [root@nfs-server ~]# python information_of_stuff.py
    Please input your name:xiaobai
    Please input your age:25
    Please input your sex:male
    Please input your job:engineer
    ==============================
    Information of company stuff:
    Name: xiaobai
    Age: 25
    Sex: male
    Job: engineer
    ==============================

    输入一个0~100直接的数字让用户猜,并且猜测次数不能大于三次。

    [root@nfs-client2 ~]# vim guess_num.py   
    #!/bin/python
    import os
    os.system('clear')                  #执行时先清屏
    real_num=int(raw_input("please input the real_num from 0 to 100:"))
    os.system('clear')                  #输入让用户猜的数字后清屏
    retry_count=0                       #设定循环关闭条件
    while retry_count<3:                #后面加冒号
            guess_num=int(raw_input("Please input a number from 0 to 100:"))
            if guess_num>real_num:
                    print "Wrong! Please try smaller!"
                    retry_count+=1       #自增
            elif guess_num<real_num:     #多个条件用elif
                    print "Wrong! Please try bigger!"
                    retry_count+=1
            else:                        #最后一个条件用
                    print "Congurations! You got it!"
                    break                #跳出循环
    else:
            print "Too much times!"

    Python不像shell,没有fi循环关闭符号,而是通过缩进控制代码层级,同一级代码缩进应保持一致,if和else不属于同一级,缩进不同也可执行,但不符合书写规范。

    raw_input输入的是字符串,字符串与数字比较时会自动转为ASCII值进行比较,因此要使用int将其转换为整数类型,break为跳出循环。

    ord:将字符串转换为ASCII对应的值。

    >>> print ord("a")
    97
    >>> print ord("1") 
    49

    优化代码,以上代码输入回车或字符串会报错,且数字不是随机值,需要优化。

    [root@nfs-client2 ~]# vim guess_num.py   
    #!/bin/python
    import os
    import random
    os.system('clear')
    real_num=random.randrange(100)
    os.system('clear')
    retry_count=0
    while retry_count<3:
            guess_num=raw_input("Please input a number from 0 to 100:").strip() #去空格回车
            if len(guess_num)==0:            #判断字符串长度是否为0
                    continue
            if guess_num.isdigit():          #判断是否全为数字
                    guess_num=int(guess_num)
            else:
                    print "You should input a number instead of string!"
                    continue                 #跳出当前循环,进行下一次循环
            if guess_num>real_num:
                    print "Wrong! Please try smaller!"
            elif guess_num<real_num:
                    print "Wrong! Please try bigger!"
            else:
                    print "Congurations! You got the real number %d !"%real_num
                    break
            retry_count+=1
    else:
            print "Too much times! The real number is",real_num

    .strip()表示将输入的空格和回车去掉;

    len(guess_num)表示计算字符串的长度;

    continue表示跳出当前循环,进行下一次循环;

    isdigit()表示判断是否全是数字;


    将上述循环更改为for循环:

    [root@nfs-client2 ~]# vim guess_num_for.py    
    #!/bin/python
    import os
    import random
    os.system('clear')
    real_num=random.randrange(100)
    os.system('clear')
    for i in range(3):
            guess_num=raw_input("Please input a number from 0 to 100:").strip()
            if len(guess_num)==0:
                    continue
            if guess_num.isdigit():
                    guess_num=int(guess_num)
            else:
                    print "You should input a number instead of string!"
                    continue
            if guess_num>real_num:
                    print "Wrong! Please try smaller!"
            elif guess_num<real_num:
                    print "Wrong! Please try bigger!"
            else:
                    print "Congurations! You got the real number %d !"%real_num
                    break
    else:
            print "Too much times! The real number is",real_num

    range为数组,其参数分别为起始值,末尾值,步长。

    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(2,10,2)
    [2, 4, 6, 8]
    >>> range(2,20,5)
    [2, 7, 12, 17]

    设计一个多层循环,用户输入密码正确的话进入目录进行选择,并能退出循环。

    [root@nfs-client2 ~]# cat mulit_loop.py    
    #!/bin/python
    passwd="test"
    logout=False            #加跳出的flag
    for i in range(3):
        password=raw_input("Please input your password:").strip()
        if len(password)==0:
            continue
        if password==passwd:
            print "Welcome to login!"
            while True:
                user_select=raw_input('''
                ====================================
                Please input a number to continue
                1.Send files;
                2.Send emalis;
                3.exit this level;
                4.exit the whole loop.
                ====================================
                ''').strip()
                user_select=int(user_select)
                if user_select==1:
                    print "Sending files as you wish!"
                if user_select==2:
                    print "Sending emails as you wish!"
                if user_select==3:
                    print "Exit this level,please re-input the password!"
                    break
                if user_select==4:
                    print "Ok, let's have a break!"
                    logout=True
                    break
            if logout==True:
                break


关键字