q1:寫乙個使用者迴圈猜年齡的遊戲,猜對就退出,猜不對就繼續猜,猜三次,提示使用者是否繼續,使用者回答y或者y就繼續猜,三次之後再重複,回答n或n就結束遊戲。
#! /usr/bin/env python
#-*- coding:utf-8 -*-
#猜年齡
import random
age = random.randint(1,10)
print (age)
iscontinue = 1
while iscontinue:
for i in range(3):
guess = int(input("請猜數:"))
if guess == age:
print('猜對了。')
iscontinue = 0
break
else:
print('猜錯了')
if iscontinue == 0:
break
strcontinue = input('還繼續嗎?(y/n)')
if strcontinue == 'y' or strcontinue == 'y':
iscontinue = 1
elif strcontinue == 'n' or strcontinue == 'n':
iscontinue = 0
else:
print ('輸入錯誤,退出')
注意1. input 返回的是str,需要強制轉換成int
2. break只能跳出一層,如果要連續跳出,需要在外層做一道判斷
3. 判斷使用者輸入的處理,不簡潔,打算用regex來實現,沒有時間再查了。
q2:寫乙個使用者認證程式,有三組使用者名稱和密碼,每當任意乙個使用者密碼輸入錯誤三次則對該使用者進行限制登入
#! /usr/bin/env python
#-*- coding:utf-8 -*-
u1:p1
u2:p2
u3:p3
auth =
auth_lock =
while true:
uname = input('請輸入使用者名稱:')
if auth_lock[uname] == 1:
print(uname,'已經被鎖定(連續輸錯3次密碼)。')
break
au_times = 1
while au_times <= 3:
upass = input('請輸入密碼:')
if upass != auth[uname]:
print ('使用者名稱密碼錯誤(', au_times, ')。')
au_times += 1
if au_times > 3:
auth_lock[uname] = 1
break
else:
print ('認證通過。')
au_times = 0
break
if au_times == 0:
break
注:1. 用了2個字典,乙個字典用於儲存使用者名稱密碼,另乙個字典用來儲存對應的使用者名稱是否被鎖。
2. 不健壯,沒有對輸入進行校驗,如果輸入了非key,則會報"keyerror",有對應的解決辦法。待後面補充。
q3 列印乘法小九九**
for i in range(1,10):
for j in range(1,10):
print("%d*%d=%2d" % (i,j,i*j),end=" ")
print("-")
q4 列印金字塔圖形
for i in range(20):
print(' ' * (20-i-1) + '*' * (2*i+1) )
python闖關 python闖關 Day05
乙個簡單的 選單 usr bin env python coding utf 8 mymenu 動物 貓 黃貓 花貓 狗 二哈 金毛 植物 樹 大樹 小樹 草 綠草 矮草 menu list list mymenu.keys while true print 編號 center 50,for i i...
python闖關 python闖關 Day009
第9章 合併表達 1 將names albert james kobe kd 中的名字全部變大寫 names albert james kobe kd names name.upper for name in names 應記住的表達方式,很python print names 2 將names a...
python闖關 python闖關 Day06
函式式程式設計 python的函式式程式設計,需要關注以下幾個點。1.引數 有無引數 形參和實參的區別 引數可以是哪些型別,引數的讀取順序等。2.返回值 未指定的情況下,預設是有返回值的。按照之前的程式經驗,呼叫函式前需要將環境引數壓棧,再壓入引數 push 再跳轉到函式,再由函式反向讀取壓入的引數...