python(day003——基础知识3)

1.标准输入和标准输出

#标准输入
>>> import sys
>>> hi=sys.stdin.readline()
hello
>>> hi
'hello\n'
>>> hi[:-1]
'hello'
>>> hi=sys.stdin.readline() #输入类型为字符串
1
>>> type(hi)
<class 'str'>


#标准输出
#以下三行在事实上等价:
import sys
sys.stdout.write('hello'+'\n')
print('hello')
print(len('hello'))

2.最大值最小值

练习 :找到列表最大值,找到列表第二大值。[1,2,2,3,3,4,4]

#找到列表最大值
>>> ls=[1,2,2,3,3,4,4]
>>> flag=0
>>> for i in ls:
...     if i>flag:
...         flag=i
...
>>> print (flag)
4
>>> max(ls)
4
>>> min(ls)
1

#找到第二大数值
>>> a
[1, 4, 6, 2, 3, 7, 1, 1, 3, 5]
>>> sorted(list(set(a)))[-2]
6


#a=[1,3,5,7,7,5,2,1]
a=[7,5,5,7,7,5,2,1]
max = ""
second_max_num = ""
for i in a:
    if max =="":
        max = i
    elif i>max:
        second_max_num = max
        max = i
    elif i<max and second_max_num == "":
        second_max_num = i
    elif i<max and second_max_num != "" and i>second_max_num:
        second_max_num = i

print(second_max_num )

3.random函数

>>> import random
>>> random.random()  #生成0和1之间的随机浮点数float
0.5514671641463105
>>> random.randint(1,3)  #随机整数
2
>>> random.randint(1,3)
3
>>> random.randint(1,3)#开区间
1

>>> random.choice([1,2,34,5,6])  #随机从list取值
34
>>> random.choice([1,2,34,5,6])
6

>>> a=[1,4,65,7]
>>> random.shuffle(a)  #重新排序
>>> a
[4, 65, 7, 1]

>>> random.uniform(3,6)  #随机生成数字
3.1478466842745556
>>> random.uniform(3,6)
4.632935459538357
#取10个随机字母
>>> import string
>>> a=list(string.ascii_letters)
>>> result=[]
>>> for i in range(10):
...     result+=random.choice(a)
...
>>> print (result)
['U', 'J', 'j', 'T', 's', 'y', 'W', 'R', 'Z', 'J']
>>> ''.join(result)
'UJjTsyWRZJ'

#方法二:
>>> import string
>>> a=list(string.ascii_letters)
>>> random.shuffle(a)
>>> ''.join(a[:10])
'vKhBoaIjXc'

#方法三:
>>> import string
>>> a=list(string.ascii_letters)
>>> random.sample(a,10)
['w', 'Z', 'D', 'Y', 'e', 'x', 'R', 'Q', 'W', 'C']
>>> "".join(random.sample(a,10))
'CvsdrWtexu'
#随机生成9位密码,要求3数字、3小写字母、3大写字母,随机组合
import string
import random
a=list(string.ascii_lowercase)
b=list(string.ascii_uppercase)
c=list(string.digits)
flag=[]
for i in range(9):
    if i <3:
        flag+=random.choice(a)
    elif i<6:
        flag += random.choice(b)
    else:
        flag += random.choice(c)

print(flag)
random.shuffle(flag)
print(''.join(flag))

#方法二:
import random
num_part = str(random.randint(100,999))

lower_letter_part = ""
for i in range(3):
    lower_letter_part+=chr(random.randint(97,122))


upper_letter_part = ""
for i in range(3):
    upper_letter_part+=chr(random.randint(65,90))


s=list(num_part+lower_letter_part+upper_letter_part)
random.shuffle(s)
print("".join(s))

4.二进制和十进制互换

#二进制转十进制
s=input("请输入一个二进制数字:")
print(type(s))
l=len(s)
result=0
for i in range(l):
     #print(int(s[-i-1]))
     result+=int(s[-i-1])*2**i
     print(result)

#十进制转二进制
k=input("请输入一个十进制数字:")
l2=len(k)
result2=[]
while 1:
    if divmod(int(k),2)[0]!=0:
#divmod(a,b)用来取余
        result2.insert(0,str(divmod(int(k),2)[1]))
#用append导致拼接结果反了
#列表中内容为数字时,最后用join会报错,只能拼接string
        k=divmod(int(k),2)[0]
        #print(k)
    else:
        result2.insert(0,str(divmod(int(k),2)[1]))
        break
print(type(result2[1]))
print("".join(result2))

#十进制转二进制
num=input("请输入一个十进制数字:")
result3=[]
while num!=0:
    num,num2=divmod(int(num),2)
    result3.insert(0,str(num2))

print(''.join(result3))

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值