Python学习1

学习自《编程小白的第一本 Python 入门书》

P61

1.jpg

验证用户登录的函数

def account_login():
    password = input('Password:')
    if password == '12345':
        print('Login success!')
    else:
        print('Wrong password or invalid input!')
        account_login()
account_login()

上面的函数可以改成这样

def account_login():
    password = input('Password:')
    password_correct = password == '12345'
    if password_correct:
        print('Login success')
    else:
        print('Wrong password or invalid input!')
        account_login()
account_login()
2.jpg

接下来使用elif语句给刚才设计的函数增加一个重置密码的功能

password_list = ['*#*#','12345']
def account_login():
    password = input('Password:')
    password_correct = password == password_list[-1]
    password_reset = password == password_list[0]
    if password_correct:
        print('Login success!')
    elif password_reset:
        new_password = input('Enter a new password:')
        password_list.append(new_password)
        print('Your password has changed successfully!')
        account_login()
    else:
        print('Wrong password or invalid input!')
        account_login()
account_login()

第1行:创建一个列表,用于存储用户的密码、初始密码和其他数据(对实际数据库的简化模拟);

第2行:定义函数;

第3行:使用input获得用户输入的字符串并储存在变量password中;

第4行:当用户输入的密码等于密码列表中最后一个元素的时候(即用户最新设定的密码),登录成功

第5-9行:当用户输入的密码等于密码列表中第一个元素的时候(即重置密码的“口令”)触发密码变量,并将变更后的密码储存至列表的最后一个,成为最新的用户密码;

第10行:反之,一切不等于预设密码的输入结果,全部会执行打印错误提示,并且再次调用函数,让用户再次输入密码;

第11行:调用函数。

for循环

>>> for every_letter in 'Hello world':
    print(every_letter)

    
H
e
l
l
o
 
w
o
r
l
d
  • 说明
3.jpg

加深理解

>>> for num in range(1,11):
    print(str(num) + ' + 1=',num + 1)

    
1 + 1= 2
2 + 1= 3
3 + 1= 4
4 + 1= 5
5 + 1= 6
6 + 1= 7
7 + 1= 8
8 + 1= 9
9 + 1= 10
10 + 1= 11

while循环

4while.jpg

控制while循环,在循环过程中制造某种可以使循环停下来的条件

>>> while True:
    print('Repeat this line !')
    count = count + 1
    if count == 5:
        break

    
Repeat this line !
Repeat this line !
Repeat this line !
Repeat this line !
Repeat this line !

除此之外,让 While 循环停下来的另一种方法是:改变使循环成立的条件。为了解释这个例子,我们在前面登录函数的基础上来实现,给登录函数增加一个新功能:输入密码错误超过3次就禁止再次输入密码

password_list = ['*#*#','12345']
def account_login():
    tries = 3
    while tries > 0:
        password = input('Password:')
        password_correct = password == password_list[-1]
        password_reset = password == password_list[0]
        if password_correct:
            print('Login success!')
        elif password_reset:
            new_password = input('Enter a new password:')
            password_list.append(new_password)
            print('Your password has changed successfully!')
            account_login()
        else:
            print('Wrong password or invalid input!')
            tries = tries -1
            print( tries, 'times left')
    else:
        print('Your account has been suspended')
        
account_login()

这段代码只有三处与前面的不一样:

第4-5行:增加了 while 循环,如果 tries > 0 这个条件成立,那么便可输入密码,从而执行辨别密码是否正解的逻辑判断;

第20-21行:当密码输入错误时,可尝试的次数 tries 减少1;
第23-24行:while 循环的条件不成立时,就意味着尝试次数用光,通告用户账户被锁。

在这里while可以理解成是 if 循环版,可以使用 while-else结构,而在 while 代码块中又存在着第二层的逻辑判断,这其实构成了嵌套逻辑(NestedCondition)

练习题 P70

1、设计这样一个函数,在桌面的文件夹上创建10个文本,以数字给它们命名。

def text_creation():
    path = 'D:\\'
    for name in range (1,11):
        with open(path + str(name) + '.txt','w') as text:
            text.write(str(name))
            text.close()
            print('Done')
text_creation()

2、复利是一件神奇的事情,正如富兰克林所说:“复利是能够将所有铅块变成金块的石头”。设计一个复利计算 invest(),它包含三个参数: amount (资金), rate (利率),time (投资时间)。输入每个参数后调用函数,应该返回每一年的资金总额。它看起来就应该像这样 (假设利率为5%):

def invest(amount, rate, time):
    print("principal amount:{}".format(amount))
    for t in range(1, time + 1):
        amount = amount * (1 + rate)
        print("year {}: ${}".format(t, amount))
invest(100, .05, 8)
invest(2000, .025, 5)

3、打印1-100内的偶数

不能整除的数就是偶数

def even_print():
    for i in range(1,101):
        if i % 2 == 0:
            print(i)
even_print()

问题.jpg
import random
def roll_dice(number=3, points=None):
    print('<<<<< ROLL THE DICE! >>>>>')
    if points is None:
        points = []
    while numbers > 0:
        point = random.randrange(1,7)
        points.append(point)
        numbers = numbers - 1
    return points

def roll_result(total):
    isBig = 11 <= total <= 18
    isSmaill = 3 <= total <=10
    if isBig:
        return 'Big'
    elif isSmaill:
        return 'Small'

def start_game():
    print('<<<<< GAME STARTS! >>>>>')
    choices = ['Big','Small']
    your_choice = input('Big or Small :')
    if your_choice in choices:
        points = roll_dice()
        total = sum(points)
        youWin = your_choice == roll_result(total)
        if youWin:
            print('The points are',points,'You win !')
        else:
            print('The points are',points,'You lose !')
    else:
        print('Invalid Words')
        start_game()
start_game()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容

  • 本内容为《用Python写网络爬虫》书籍内容,有兴趣的读者可以购买本书,本章的代码皆可在Python3中运行。为了...
    海人为记阅读 2,245评论 0 5
  • 本系列内容来源于 廖雪峰的Python教程 点击查看原文 入门零碎知识(主要回顾和Java不同的地方) pytho...
    旋哥阅读 727评论 0 4
  • 下定决心要开发自己多线程学习能力,所以在学应付面试的同时,决定再开Python一起学。准备就跟着《Python基础...
    ZzzsWszzZ阅读 1,220评论 0 0
  • 任何一项事情,前期不愿意花时间去调研沟通思考,后期还是会花更多的时间去修改推翻,恶心循环。提倡未雨绸缪,亡羊补牢已晚矣
    阿拉斯加南海岸线阅读 111评论 0 0
  • 听说海里有一条叫做Alice的鲸鱼 它没有朋友,它很孤独。 今天是2016年12月26日 一年前的今天,我不再相信...
    奕风少年520阅读 2,269评论 0 1