天天看点

第三天:简单编程问题

1.交换变量

1.假如有二杯饮料,一杯可乐,一杯雪碧,如何交换它们?

可以引入一个空的杯子

代码实现如下:

a = int(input(">>>"))
b = int(input(">>>"))
print(a,b,sep = '\t')
t = a
a = b
b = t
print(a,b,sep = '\t')
>>>1
>>>2
1	2
2	1
           
a = input(">>>")
b = input(">>>")
print(a,b,sep = '\t')
t = a
a = b
b = t
print(a,b,sep = '\t')

>>>可乐
>>>雪碧
可乐	雪碧
雪碧	可乐
           

2.python中提供了比较自然的方式,交换两个变量

变量1 ,变量2 = 变量2,变量1

则变量2的值赋给了变量1,变量1的值赋给了变量2

注意:左右两边的变量个数也需相同

x = int(input(">>>"))
y = int(input(">>>"))
print(x,y,sep = '\t')
x , y = y , x
print(x,y,sep = '\t')

>>>1
>>>2
1	2
2	1
           
x = input(">>>")
y = input(">>>")
print(x,y,sep = '\t')
x , y = y , x
print(x,y,sep = '\t')
>>>可乐
>>>雪碧
可乐	雪碧
雪碧	可乐
           

3.尝试交换三个变量

x = 1
y = 2
z = 3
x , y , z = z , y , x
print(x,y,z)
           

2.温度互转

摄氏温标(C)和华氏温标(F)之间的换算关系为:

F=C×1.8+32

C=(F-32)÷1.8

1.C转F

T = input("请输入带有符号的温度值:")
if T[-1] in ['C','c']:#字符串最后一个字符是F或者f
    C=(eval(T[0:-1])) * 1.8 + 32
    print("转换后的温度是{:.2f}f".format(C))
    
请输入带有符号的温度值:100c
转换后的温度是212.00f
           

第一个字符到最后一个字符之前的所有字符,

也就是温度值,eval函数是脱掉字符串结构

{:.2f}.format©)输出结果,保留最后两位小数,是C的格式化

2.F转C

T=input("请输入带有符号的温度值:")
if T[-1] in ['F','f']:
    C=(eval(T[0:-1])-32)/1.8
    print("转换后的温度是{:.2f}C".format(C))
    
请输入带有符号的温度值:100f
转换后的温度是37.78C
           

3.任意温度互转

for i in range(2):
    T =input("请输入带有符号的温度值:")
    if T[-1] in ['F','f']:
        C=(eval(T[0:-1])-32)/1.8
        print("转换后的温度是{:.2f}C".format(C))
    elif T[-1] in ['C','c']:
        F=1.8*eval(T[0:-1])+32
        print("转换后的温度是{:.2f}F".format(F))
    else:
        print("输入格式错误")
        
请输入带有符号的温度值:10F
转换后的温度是-12.22C
请输入带有符号的温度值:10C
转换后的温度是50.00F        
           

3.数字中各位数之和

1.首先要分析这个数字的位数

2.依次求个位数,十位数,百位数,…

3.求它们的和

实现一:

a = input(">>>")
c = len(a)
a = int(a)
sum = 0
for i in range(c):
    b = a % 10
    sum = sum + b
    a = a // 10
print(sum)

>>>12345
15
           

由于len()函数对于string类型的变量可测字符长度,即可的位数

需要再把a的数据类型转换为int

实现二:

x = int(input(">>>"))
sum = 0
while x > 0:
    y = x % 10
    sum =sum + y
    x = x // 10
print(sum)

>>>45678
30
           

不管用那种语句进行实现,其代码核心内容始终不会变

4.判断某数是否为素数

素数,也叫质数,就是除了1以外没有其他因数

1.for+ if …else

a = int(input(">>>"))
for i in range(2,a):
    if a % i == 0:
        print("不是素数")
        break
    else:
        print("是素数")
        break
>>>17
是素数
           

2.while + if …else

x = int(input(">>>"))
k = 2
while k <= x:
    if x % k == 0:
        print("不是素数")
        break
    else:
        print("是素数")
        break
    k = k+1
           

一样,核心算法判断理解都是一样的,也可以写成do …while语句,自己可以动手试试看

5.生成随机数

import random
print(random.randint(0, 9))

2
           

以上实例我们使用了 random 模块的 randint() 函数来生成随机数,你每次执行后都返回不同的数字

语法:random.randint(a, b) 随机生成

1.random.random()

用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限。如果a > b,则生成随机数

随机整数:

>>> import random
>>> random.randint(0,99)
>21
           

随机选取0到100间的偶数:

>>> import random
>>> random.randrange(0, 101, 2)
42
           

随机浮点数:

>>> import random
>>> random.random() 
0.08761508031661935
>>> random.uniform(1, 10)
3.4665122389179395
           

随机字符:

>>> import random
>>> random.choice('abcdefg&#%^*f')
'd'
           

多个字符中选取特定数量的字符:

>>> import random
random.sample('abcdefghij',3) 
['a', 'd', 'b']
           

多个字符中选取特定数量的字符组成新字符串:

>>> import random
>>> import string
>>> string.join(random.sample(['a','b','c','d','e','f','g','h','i','j'], 3)).r
eplace(" ","")
'fih'
           

随机选取字符串:

>>> import random
>>> random.choice ( ['c++', 'c', 'java', 'python', 'c#'] )
python
           

洗牌:

>>> import random
>>> items = [1, 2, 3, 4, 5, 6]
>>> random.shuffle(items)
>>> items
[3, 2, 5, 6, 4, 1]
           

6.删除列表的重复项

1.使用内置函数set

先将列表转换为集合,因为集合是不重复的,故直接删除重复元素,而且输出结果为排序后的

a = [1,2,3,4,5,6,6,6]
print(set(a))		#第一步转化为集合
print(list(set(a)))	#集合化为列表

{1, 2, 3, 4, 5, 6}
[1, 2, 3, 4, 5, 6]
           

2.迭代法:

a = [1,2,3,4,5,6,6,6]
b = []
for i in a:
    if i not in b:
        b.append(i)
print(b)

[1, 2, 3, 4, 5, 6]
           

写在最后:

谢谢你坚持看完了,本人小白一枚,希望这篇文章能帮助到你

文章中有错误地方欢迎指正,大家一起进步哈