马上注册,结交更多好友,享用更多功能,让你轻松玩转新大榭论坛!
您需要 登录 才可以下载或查看,没有账号?注册
x
设计一个外币与人民币换汇应用程序,要求能够输入的汇率h和外币金额s,换算成相应的人民币金额r。
) c# p$ h; Q( |) h, ?' v5 p 本题是一个综合性较强的实际问题,教师要引导学生从以下几个方面思考:/ z; z# v- l0 Y6 c3 {/ T
(1)如何收集外币与人民币换汇汇率?采用何种数据结构存储汇率数据?
( ^! ^: n7 s! |* n$ S, k(2)需要哪些变量?如何计算换汇金额?2 K' P' }) r) O0 w* U
(3)如何设计循环控制条件实现多次查询换汇汇率功能?
% S. S( g$ x( B
/ G$ f# r: e6 f4 [- # -*- coding: utf-8 -*-& q7 M8 t: \6 |2 R$ R0 {# n( k
- """$ I/ i8 R4 s L9 @% D. a
- Team: 新大榭 {" i) ~6 X- c4 a) H
- Author: 张黎斌8 ^3 V3 w, t( }- K; W8 T
- update: 2021-07-24
5 W" b' b! T* {- O6 }1 }$ ? - Level: D$ ~, a, l6 u( P2 s7 c3 r6 M
3 Z+ p3 m0 b5 u2 Y- 设计一个外币与人民币换汇应用程序,
6 G3 f6 N/ i) @5 Z3 J2 F, m- n - 要求能够输入的汇率h和外币金额s,换算成相应的人民币金额r。* {6 b" T6 O! y* _
- """
& N5 x0 Q$ ?3 [ - #版本1:直接输入汇率h和外币金额s,显示相应的人民币金额r* g: o/ H+ v8 n
- def exchange_1():
6 @8 Z1 p8 }6 V0 E% X - h = float(input('请输入汇率:'))6 d) H9 Y M" z; C+ Q
- s = float(input('请输入金额:'))# H! u( f/ [# ]* r$ j+ K
- r = h * s2 G' S+ w# h: w7 i
- print(f'汇率为{h}的外币金额{s}元可以兑换人民币{r:0.2f}元')6 |2 h7 K$ x7 H: ?
- $ Y9 E1 U$ |6 ?; @$ v4 Z" R
- #版本2:直接输入外币名称m和外币金额s,显示相应的人民币金额r- A7 |0 {% n* t. c0 x& [8 c
- def exchange_2():4 D* B% A2 s& g; ^: z
- f = {'日元':0.0605, '欧元':7.6320, '台币':0.2197, '美元':6.7201, '韩元':0.0059,
9 w6 L2 ^2 ~5 c8 n6 c* ` - '澳元':4.8492, '瑞士法郎':6.8835, '英镑':8.7562, '印度卢比':0.0956, '越南盾':0.0003}
7 n2 w8 Z% }: O8 U" l - print('各国汇率信息如下:')! s0 S1 y2 D0 `' ], A: [5 `; i/ W
- for k, v in f.items():
: C! Z2 r3 J4 J1 _ - print(f'{k}:{v}')
8 I- `" w8 j. J! m7 W, v4 {+ t - name = input('请输入外币名称:')#直接回车结束查询7 S) Q% S* c8 r+ F8 T
- while name:0 g( I1 [$ N. K A6 Q' k4 u
- if name in f.keys():4 h b+ E1 S U$ l2 _: w$ j
- s = float(input('请输入金额:'))
! e0 ]# m! C, l3 E) V5 z - r = f[name] * s! E3 k" s3 ?0 e7 s/ z( p
- print(f'{s}元{name}可以兑换人民币{r:0.2f}元')
9 }+ l n4 X# T+ G$ a6 p4 X - else:
/ [# Z2 \( x! ^; I; r6 s - print(f'{name}不是正确的外币名称!')' x, Y' k3 }0 |( f3 V
- name = input('请输入外币名称:')
8 x; K+ p; b# \. ^ - else:! J8 U. W. U: v2 c2 y; z
- print('查询结束!')
" V+ T$ [1 K$ @1 A2 U -
, i9 ~* S2 u' t) g8 J - #版本3:从文件读取汇率信息,支持模糊查询外币名称
/ b& d8 F9 G6 s8 M$ x" M) E `: r - def exchange_3():; ^& T8 f4 A; O7 k0 ]
- f = {}. S" x) P+ R- v; c! R7 d
- with open('7458:人民币兑换列表.txt', 'r', encoding='utf8') as fo:
0 H8 b1 J% |9 n# s8 x - for line in fo.readlines():#依次读取每行 ; D% {3 y- g4 J1 I3 h, W( }
- line = line.strip().split() #去掉每行头尾空白
* O" ], w* w+ ^6 Z: s - f_n = line[1].split('(')#只保留外币名称4 U7 Z0 k: ?7 ^4 l6 p! B
- f[f_n[0]] = float(line[3])! K- X* N5 z! H6 w6 z; |0 Y! y
- print('各国汇率信息如下:')4 [3 `/ \- i4 \' w5 E
- for k, v in f.items():
+ E8 a: d+ W# q% s# ^. X! X2 j - print(f'{k}:{v}')2 @& _1 c# b7 T
- name = input('请输入外币名称(支持模糊查询):')#直接回车结束查询
: a e( y+ m3 t4 C0 d5 X# l7 ] - while name:
! A# k/ j' m% K8 i* T( k/ A1 W - f_name = []( l) M/ w) G' ^) d; ?% n. k9 Y
- for f_n in f.keys():( w- S" j: j& W y& O7 _ `3 z
- if name in f_n:
* f5 R9 p# i! m! q+ s - f_name.append(f_n)
" |- U1 y9 s7 Q* `0 z/ Y -
# {7 o; M( A7 ^+ u0 j - if name in f.keys():- e2 |0 s! q2 _" V0 ~
- s = float(input('请输入金额:'))
8 t3 R7 O2 v5 j9 ], j. S. x: ` - r = f[name] * s
. o% [2 V) u2 g- z7 s3 e, A - print(f'{s}元{name}可以兑换人民币{r:0.2f}元')
* \, f- E5 ?" M, P - name = input('请输入外币名称(支持模糊查询):')#直接回车结束查询
: A5 Z; E" O. P) q$ q( c - elif f_name:
( q+ T; C! y& U6 d - print('你查询的外币完整名称如下:')8 q3 e$ X* i- t- c) E
- for f_n in f_name:
! I$ m8 v1 e: S- M* |9 c$ y" O" Z - print(f'{f_n}:{f[f_n]}')
) K3 B2 S/ n, }1 M% I+ Q2 J1 n - name = input('请输入完整的外币名称:')#直接回车结束查询+ W3 |4 s: D& b
- else:, {1 x! C( t( u5 [, R7 }/ A
- print(f'{name}不是正确的外币名称!')
6 J% s. Q; X8 V, ?. \% f4 S8 s7 N - name = input('请输入外币名称(支持模糊查询):')#直接回车结束查询
0 ?: v) y2 U( k; n0 l+ e! Q - else:
/ T4 q; {1 n( y4 g6 r9 W$ D - print('查询结束!')) |6 \# P4 G# l; R/ G
-
! {) F$ z3 l" x& M$ p7 X) v8 | - #exchange_1()
% \9 C* r. e; `. Z& N8 e! ~- Z+ N - #exchange_2()& k/ q. {4 _* ~% {0 D- L8 A( D) ^
- exchange_3()
复制代码 ; C' y# W( X7 n1 v8 o) v: D4 D
|
|