python 認真學習的第天,從零開始
阿新 • • 發佈:2018-12-21
#剪刀石頭布的小遊戲
#和第一天的程式碼相比,通過編寫函式的方式來顯示電腦出的什麼,程式碼沒有那麼臃腫
import random i=random.randint(1,3) user=int(input('請出拳(1剪刀2石頭3布)')) assert 1<=user<=3,'輸入的值有誤,請輸入正確的數值' def cs1(l): if i == 1: return '剪刀' elif i==2: return '石頭' else: return '布' l=i if i==user: print('平手') print('電腦出的是:',cs1(l),sep='') elif (user==1 and i==3) or (user==2 and i==1) or (user==3 and i==2): print('我贏了') print('電腦出的是:',cs1(l),sep='') else: print('電腦贏') print('電腦出的是:',cs1(l),sep='') #使用exec和eval執行求值字串 exec('i=20') exec('print(i)') 20 print(i*i) 400 from random improt randint File "<stdin>", line 1 from random improt randint ^ SyntaxError: invalid syntax from random import randint randint(1,20) 10 exec('randint=30') randint(1,20)#賦值之後randint函式無法使用 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'int' object is not callable exec('randint=30',scope) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'scope' is not defined from random import randint randint(1,20) 17 scope={} exec('randint=30',scope) randint(1,20)#把賦值放入一個字典就不會和已有函式衝突 4 scope.keys() dict_keys(['__builtins__', 'randint'])#字典中存在randint a=20 args={'a':20,'b':30} scope={} exec('print(a+b)',scope,args) 50 eval('1+2-4')#exec不會提供返回值,eval提供返回值 -1 eval('2*(6-2)') 8 scope={'x':20} args={'y':30} args.keys <built-in method keys of dict object at 0x000000000255A678> scope.keys <built-in method keys of dict object at 0x0000000001CFC480> eval('x+y',scope,args) 50 scope={} codes='' print('',end='') while True: code=input('') if code =='': exec(codes,scope) codes='' print('',end='') continue codes += code +'\n' #a,b,c=10,20,30 #print(a*b*c) #6000 #判斷奇偶數,end退出 while True: a=input('請輸入一個數') if a=='end': break num=int(a) if num%2 == 0: print('這個數是偶數') else: print('這個數是奇數') #輸入行數列印菱形 i=int(input('請輸入行數,必須是奇數!')) assert i%2==1,'數值有誤' if i%2 != 0: y=i//2 x=1 k=y while k>=0: print(' ' * k,end='') print('*' * (2*x-1)) k -= 1 x+=1 x-=2 k +=2 while k<=y: print(' ' * k,end='') print('*' * (2*x-1)) k+=1 x-=1 #模擬計算器 while True: expression = input("calc:") if expression == "exit": break print(expression,"=", eval(expression)) #列表和元組 names=['my','name','is','a','pig'] number=[1,2,3,4,5,6,7] salary=[5.0,6.0,7.0,8.0] flags=[True,False,True,False] values=[names,number,salary,flags,['a','b','c']] for value in values: print(value) #分片、加、乘 omg=input('輸入年份')[3] print(omg) import re months=['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'] year=input('年:') assert 1<=int(year)<=9999,'輸入的值有誤' month=input('月:') assert 1<=int(month)<=12,'輸入的值有誤' day=input('日:') assert 1<=int(day)<=31,'輸入的值有誤' monthname=months[int(month)-1] print(year + '年'+ monthname + day +'日') #切片 >>> s='123456789' >>> print(s[8:9]) 9 >>> print(s[2:9]) 3456789 >>> print(s[2:10]) 3456789 >>> print(s[2:111]) 3456789 >>> print(s[0:9]) 123456789 >>> print(s[1:9]) 23456789 >>> print(s[1:8]) 2345678 >>> number=[1,2,3,4,5,6,7,8] >>> print(number[-3:-1]) [6, 7] >>> print(number[-3:-0]) [] >>> print(number[3:-0]) [] >>> print(number[0:3]) [1, 2, 3] >>> print(number[-3:]) [6, 7, 8] >>> print(number[-3:8]) [6, 7, 8] >>> print(number[:]) [1, 2, 3, 4, 5, 6, 7, 8] >>> print(number[:3]) [1, 2, 3] >>> print(number[1:6:2]) [2, 4, 6] >>> print(number[1:8:2]) [2, 4, 6, 8] >>> print(number[:7:2]) [1, 3, 5, 7] >>> print(number[:8:2]) [1, 3, 5, 7] >>> print(number[::2]) [1, 3, 5, 7] >>> print(number[4::2]) [5, 7] >>> print(number[8:2:-2]) [8, 6, 4] >>> print(number[8:2:-1]) [8, 7, 6, 5, 4] >>> print(number[8:2:0]) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: slice step cannot be zero url=input('請輸入網址:')#https://www.baidu.com scheme=url[:5] host=url[8:] print('scheme:',scheme,'\n',"host:",host) n=int(input('請輸入一個整數:')) numbers=range(1,n) number1=numbers[0::2] number2=numbers[1::2] for number in number1: print(number,end=' ') print('') print(' ',end = '') for number in number2: print(number,end=' ') '''